在总结list之前,先要弄明白几个跟list相关的概念:

列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出。

表头元素:列表最左端第一个元素。

表尾元素:列表最右端的最后一个元素。不包含任何元素的列表成为空列表。

1)新增

a)lpush

语法:lpush key value[value]

解释:把一个或多个元素插入表头。如果是多个value时,按照从左到右的次序插。返回插入元素的个数

  1. [root@xsf001 ~]# redis-cli
  2. redis 127.0.0.1:6379> lpush lst.user zhangsan   #插入一个元素
  3. (integer) 1
  4. redis 127.0.0.1:6379> lpush lst.user zhangsan lisi   #插入多个元素,list中允许插入重复的元素
  5. (integer) 3

b)lpushx

语法:lpushx key value

解释:插入一个表头元素,当且仅当列表key存在时,才能插入。返回列表中元素的个数

  1. redis 127.0.0.1:6379> lpushx lst.user wangwu   #列表存在
  2. (integer) 4
  3. redis 127.0.0.1:6379> lpushx lst.tech wangwu   #列表不存在,不插入
  4. (integer) 0

c)rpush

语法:rpush key [value]

解释:将一个或多个值插入到队列的队尾。多值时,从左到右依次添加。返回列表中元素个数

  1. redis 127.0.0.1:6379> rpush lst.user ls005     #列表存在
  2. (integer) 5
  3. redis 127.0.0.1:6379> rpush lst.tech tec01 tec02 tec03  #列表不存在
  4. (integer) 3

d) rpushx

语法:rpushx key value

解释:讲值插入到列表队尾,当且仅当列表key存在时,才添加。返回列表元素个数

  1. redis 127.0.0.1:6379> rpushx lst.tech tec04  #key 存在
  2. (integer) 4
  3. redis 127.0.0.1:6379> rpushx lst.sub englist #key 不存在
  4. (integer) 0

e)linsert

语法:linsert key before|after pivot value

解释:将值插入到pivot的前面或后面。返回列表元素个数。如果参照点pivot不存在不插入。如果有多个pivot,以离表头最近的为准

  1. redis 127.0.0.1:6379> linsert lst.tech after tec04 tec06  #后面插
  2. (integer) 5
  3. redis 127.0.0.1:6379> linsert lst.tech before tec06 tec05 #前面插
  4. (integer) 6
  5. redis 127.0.0.1:6379> linsert lst.tech before tec08 tec07 #参照点不存在,不插
  6. (integer) -1
  7. redis 127.0.0.1:6379> linsert lst.user after zhangsan zhangsan01  #列表中有多个pivot,以从左到右的第一个为准
  8. (integer) 6

2)查询

a)lindex

语法:lindex key index

解释:通过索引index获取列表的元素。 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推

  1. redis 127.0.0.1:6379> lindex lst.user 0  #表头
  2. "wangwu"
  3. redis 127.0.0.1:6379> lindex lst.user -1 #表尾
  4. "ls005"
  5. redis 127.0.0.1:6379> lindex lst.user 2 #第三个元素
  6. "zhangsan"
  7. redis 127.0.0.1:6379> lindex lst.user -2 #倒数第二个元素
  8. "zhangsan"

b)lrange

语法:lrange key start stop

解释:获取指定开始和结束范围的一些列元素。0:表头,-1:表尾。如果stop指定的元素在start的左边,返回空列表

  1. redis 127.0.0.1:6379> lrange lst.user 0 -1 #返回所有
  2. 1) "wangwu"
  3. 2) "lisi"
  4. 3) "zhangsan"
  5. 4) "zhangsan01"
  6. 5) "zhangsan"
  7. 6) "ls005"
  8. redis 127.0.0.1:6379> lrange lst.user -1 0  #返回空
  9. (empty list or set)
  10. redis 127.0.0.1:6379> lrange lst.user 1 2  #返回多个
  11. 1) "lisi"
  12. 2) "zhangsan"
  13. redis 127.0.0.1:6379> lrange lst.user 1 1   #返回一个元素
  14. 1) "lisi"

3)修改

lset

语法:lset key index value

解释:设置列表指定索引的值,如果指定索引不存在则报错

  1. redis 127.0.0.1:6379> lset lst.user 2 zhangsan1  #设置第三个元素为zhangsan1
  2. OK
  3. redis 127.0.0.1:6379> lrange lst.user 0 -1
  4. 1) "wangwu"
  5. 2) "lisi"
  6. 3) "zhangsan1"
  7. 4) "zhangsan01"
  8. 5) "zhangsan"
  9. 6) "ls005"
  10. redis 127.0.0.1:6379> lset lst.user 6 ls006  #指定索引不存在
  11. (error) ERR index out of range

4)删除

a)ltrim

语法:ltrim key start stop

解释:保留指定区域的元素,其他元素全部删除

  1. redis 127.0.0.1:6379> ltrim lst.user 0 -2
  2. OK
  3. redis 127.0.0.1:6379> lrange lst.user 0 -1
  4. 1) "wangwu"
  5. 2) "lisi"
  6. 3) "zhangsan1"
  7. 4) "zhangsan01"
  8. 5) "zhangsan"

b)lrem

语法:lrem key count value

解释:移除等于value的元素,当count>0时,从表头开始查找,移除count个;当count=0时,从表头开始查找,移除所有等于value的;当count<0时,从表尾开始查找,移除|count| 个。

  1. redis 127.0.0.1:6379> lrange lst.user 0 -1
  2. 1) "zhangsan"
  3. 2) "wangwu"
  4. 3) "lisi"
  5. 4) "zhangsan1"
  6. 5) "zhangsan01"
  7. 6) "zhangsan"
  8. 7) "lisi"
  9. 8) "zhangsan"
  10. 9) "lisi"
  11. 10) "zhangsan"
  12. redis 127.0.0.1:6379> lrem lst.user 2 zhangsan #移除前两个zhangsan
  13. (integer) 2
  14. redis 127.0.0.1:6379> lrange lst.user 0 -1
  15. 1) "wangwu"
  16. 2) "lisi"
  17. 3) "zhangsan1"
  18. 4) "zhangsan01"
  19. 5) "lisi"
  20. 6) "zhangsan"
  21. 7) "lisi"
  22. 8) "zhangsan"
  23. redis 127.0.0.1:6379> lrange lst.user -1 zhangsan #移除最后一个zhangsan
  24. (empty list or set)
  25. redis 127.0.0.1:6379> lrange lst.user 0 -1
  26. 1) "wangwu"
  27. 2) "lisi"
  28. 3) "zhangsan1"
  29. 4) "zhangsan01"
  30. 5) "lisi"
  31. 6) "zhangsan"
  32. 7) "lisi"
  33. redis 127.0.0.1:6379> lrem lst.user 0 lisi  #移除所有lisi
  34. (integer) 3
  35. redis 127.0.0.1:6379> lrange lst.user 0 -1
  36. 1) "wangwu"
  37. 2) "zhangsan1"
  38. 3) "zhangsan01"
  39. 4) "zhangsan"
  40. redis 127.0.0.1:6379>

c)rpop

语法:rpop key

解释:移除并返回表尾元素

  1. redis 127.0.0.1:6379> rpop lst.user
  2. "zhangsan"

d)lpop

语法:lpop key

解释:移除并返回表尾元素

  1. redis 127.0.0.1:6379> lpop lst.user
  2. "wangwu"

5)其他

a)llen

语法:llen key

解释:获取列表长度

  1. redis 127.0.0.1:6379> llen lst.user
  2. (integer) 2

参考:http://redis.io/commands#list

Redis系列-存储篇list主要操作函数小结(转)的更多相关文章

  1. Redis系列-存储篇string主要操作函数小结

    通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简单且常用的string开始. 1.新增 a)se ...

  2. Redis系列-存储篇set主要操作函数小结

    最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己.废话不说了,直奔主题”set“ redis set 是string类型对象的无序集合 ...

  3. Redis系列-存储篇hash主要操作函数小结

    阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇blog的冲动.上篇主要谈了string,这里谈谈hash吧!hash是一些列key value(field value)的映射 ...

  4. Redis系列-存储篇list主要操作函数小结

    在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...

  5. Redis系列-存储篇sorted set主要操作命令

    Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sort ...

  6. Redis系列-存储篇string主要操作命令

    Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...

  7. Redis系列-存储篇list主要操作命令

    Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ...

  8. Redis系列-存储篇sorted set主要操作函数小结

    redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sorted set的常用函数: 1)insert a)  zadd ...

  9. Redis系列-存储hash主要操作命令

    Redis系列-存储篇hash主要操作函数小结 hash是一些列key value(field value)的映射表.常常用其存储一些对象实例.相对于把一个对象的各个字段存储为string,存储为ha ...

随机推荐

  1. docker 集群 flannel网络构建

    先保证集群状态是正常的 集群管理 kubelet 在创建pod 时会先下载一个pause 镜像,这个镜像用于容器基础网络管理非常重要: 每个node 节点都要执行该操作: iptables -P FO ...

  2. HTML表格嵌套、合并表格

    一.表格元素< table> table常用属性 border:边框像素 width,height:表格宽度/高度 bordercolor:表格边框颜色 bgcolor:表格背景颜色 二. ...

  3. 弱题(bzoj 2510)

    Description 有M个球,一开始每个球均有一个初始标号,标号范围为1-N且为整数,标号为i的球有ai个,并保证Σai = M. 每次操作等概率取出一个球(即取出每个球的概率均为1/M),若这个 ...

  4. 【HDOJ5973】Game of Taking Stones(Java,威佐夫博弈)

    思路:有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子. 游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子. 最后把石子全部取完 ...

  5. C# 的 String.CompareTo Equals和==的比较

    String.CompareTo 语法 public int CompareTo(    string strB) 返回值 小于 0,实例小于参数 strB: 0,实例等于参数 strB: 大于 0, ...

  6. LeetCode OJ-- Add Binary

    https://oj.leetcode.com/problems/add-binary/ 对两个二进制字符串求和. 对于字符串 ans_str,求它的翻转. reverse(ans_str.begin ...

  7. android 集成友盟分享之后,想自定义分享面板的看过来

    第一种情况 首先上传一张默认的友盟分享的效果图 看起来还不错,但是总是有这样那样的原因,需要我们对默认效果做出一些改变. 第二种情况 如果你想做出下面的效果: 或者这样的效果 : 总之上面的效果总是在 ...

  8. BZOJ3631 松鼠的新家(树链剖分)

    题目链接 松鼠的新家 差不多可以说是树链剖分的模板题了,直接维护即可. #include <bits/stdc++.h> using namespace std; #define REP( ...

  9. 2016北京集训测试赛(八)Problem C: 直径

    Solution 一个定理: 把两棵树用一条边练成一棵树后, 树的直径在原来两棵树的四个直径端点中产生. 放到这一题, 我们通过DP先求出大树中以每个点为根的子树中的直径, 再取每棵小树中与其他树有连 ...

  10. 【2019】问题记录一:后端获取URL参数的值内加号“+”变成空格“ ”

    问题:URL参数中加号“+”变成空格“ ” 一.现象     URL如:http://example.****.com/controller/action?param=rice+cook+panda ...