Redis的数据类型(三)——List

Redis的list是采用链表(简单的字符串列表)来存储的,允许出现重复元素,一个list中最多存放2的32次方减1个元素。Redis的list数据类型的操作,其实是通过操作list的两端数据来完成的。对于链表来说,头尾元素操作的效率都非常高,中间元素操作的效率则比较低。

命令:lpush  key value [valus...],从list左边增加元素(list不存在则新增);命令:rpush key value [valus...] 从list右边增加元素(list不存在则新增)

命令:lrange key start stop,获取key中索引从start到stop的元素(包括索引为start和stop的元素),list的索引从0开始,当索引为“-1”时,表示list的最后一个元素。

127.0.0.1:6379> lpush list1 a b c 
(integer) 3
127.0.0.1:6379> lrange list1 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> rpush list1 a b c
(integer) 6
127.0.0.1:6379> lrange list1 0 -1
1) "c"
2) "b"
3) "a"
4) "a"
5) "b"
6) "c"
127.0.0.1:6379> lrange list1  0 2
1) "c"
2) "b"
3) "a"

命令:lpop key,从list左边取出一个元素,并且这个元素会从list中删除; rpop key,从list右侧取出一个元素,这个元素也会从list中删除;

127.0.0.1:6379> lpop list1
"c"
127.0.0.1:6379> rpop list1
"c"
127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) "a"
3) "a"
4) "b"

blpop/brpop key [key ...] timeout:列表内没有任何元素时,连接将被 blpop/brpop命令阻塞,直到等待超时或发现列表中存在元素并取出一个为止。当给定多个 key 参数时,按参数 key的先后顺序依次检查各个列表,弹出第一个非空列表的最左/右元素。类似lpop/rpop,多了阻塞属性。

命令:lindex key index,获得指定索引的元素值;

127.0.0.1:6379> lindex list1 1
"a"

命令:lset key index value,设置指定索引的元素值;

127.0.0.1:6379> lset list1 0 haha
OK
127.0.0.1:6379> lset list1 1 aaa
OK
127.0.0.1:6379> lrange list1 0 -1
1) "haha"
2) "aaa"
3) "a"
4) "b"

命令:linsert key before pivot value, 在列表的元素前插入元素;linsert key after pivot value, 在列表的元素后插入元素;

127.0.0.1:6379> linsert list1 before a m
(integer) 5
127.0.0.1:6379> lrange list1 0 -1
1) "haha"
2) "aaa"
3) "m"
4) "a"
5) "b"
127.0.0.1:6379> linsert list1 after a n
(integer) 6
127.0.0.1:6379> lrange list1 0 -1
1) "haha"
2) "aaa"
3) "m"
4) "a"
5) "n"
6) "b"

命令:llen key,获取元素个数

127.0.0.1:6379> llen list1
(integer) 6

命令:lrem key count value  根据value,删除key中count个元素。当count>0时, lrem会从列表左边开始删除;当count<0时, lrem会从列表后边开始删除;当count=0时,lrem删除所有值为value的元素。

127.0.0.1:6379> lrem list1 1 a
(integer) 1
127.0.0.1:6379> lrange list1 0 -1
1) "haha"
2) "aaa"
3) "m"
4) "n"
5) "b"
127.0.0.1:6379> lpush list1 a
(integer) 6
127.0.0.1:6379> rpush list1 a
(integer) 7
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "haha"
3) "aaa"
4) "m"
5) "n"
6) "b"
7) "a"
127.0.0.1:6379> linsert list1 before m a
(integer) 8
127.0.0.1:6379> linsert list1 after m a
(integer) 9
127.0.0.1:6379> lrange list1 0 -1
1) "a"
2) "haha"
3) "aaa"
4) "a"
5) "m"
6) "a"
7) "n"
8) "b"
9) "a"
127.0.0.1:6379> lrem list1 1 a
(integer) 1
127.0.0.1:6379> lrange list1 0 -1
1) "haha"
2) "aaa"
3) "a"
4) "m"
5) "a"
6) "n"
7) "b"
8) "a"
127.0.0.1:6379> lrem list1 -1 a
(integer) 1
127.0.0.1:6379> lrange list1 0 -1
1) "haha"
2) "aaa"
3) "a"
4) "m"
5) "a"
6) "n"
7) "b"
127.0.0.1:6379> lrem list1 0 a
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "haha"
2) "aaa"
3) "m"
4) "n"
5) "b"

命令:ltrim key start stop,截取保留列表中索引从start到stop的元素(包括索引为start和stop的元素)

127.0.0.1:6379> ltrim list1 0 3
OK
127.0.0.1:6379> lrange list1 0 -1
1) "haha"
2) "aaa"
3) "m"
4) "n"

 

 

如果有写的不对的地方,请大家多多批评指正,非常感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值