您的位置:首页 > 数据库 > Redis

Redis学习05——存储字符串列表(list)

2017-09-27 21:52 465 查看
Redis学习05存储字符串列表list
一字符串列表list 说明

二两端添加
1 lpush key value1 value2

2 rpush key value1 value2

三查看列表
1 lrange key start end

四两端弹出
1 lpop key

2 rpop key

五获取列表中元素的个数
1 llen key

六其他命令
1 lpushx key value

2 rpushx key value

3 lrem key count value

4 lset key index value

5 linsert key beforeafter pivot value

6 rpoplpush source destination

Redis学习05——存储字符串列表(list)

一、字符串列表(list) 说明

在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新元素。在插入时,如果该键不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被删除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是 4294967295。



二、两端添加

2.1 lpush key value1 value2 ….

命令:

lpush key value1 value2 ....


含义:

在指定的key所关联的list的头部(left)插入所有的value,如果该key不存在,那么该命令在插入之前创建一个与该key关联的空链表,之后再向该链表的头部添加数据。插入成功,返回元素的个数。

示例

127.0.0.1:6379> lpush mylist a b c d e f
(integer) 6


2.2 rpush key value1 value2 …

命令:

rpush key value1 value2 ....


含义:

在该list的尾部(right)添加元素

示例

127.0.0.1:6379> rpush mylist 1 2 3 4 5
(integer) 11


三、查看列表

3.1 lrange key start end

命令:

lrange key start end


含义:

获取链表中从start到end的元素的值,start、end从0开始计数。也可以为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个……

示例

127.0.0.1:6379> lrange mylist 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
7) "1"
8) "2"
9) "3"
10) "4"
11) "5"


四、两端弹出

4.1 lpop key

命令:

lpop key


含义:

返回并且弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若存在,返回链表头部元素

示例

127.0.0.1:6379> lpop mylist
"f"
127.0.0.1:6379> lpop mylist
"e"


4.2 rpop key

命令:

rpop key


含义:

从尾部弹出元素

示例

127.0.0.1:6379> rpop mylist
"5"
127.0.0.1:6379> rpop mylist
"4"
127.0.0.1:6379> lrange mylist 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "1"
6) "2"
7) "3"


五、获取列表中元素的个数

5.1 llen key

命令:

llen key


含义:

返回指定的key关联的链表中的元素的数量

示例

127.0.0.1:6379> llen mylist
(integer) 7


六、其他命令

6.1 lpushx key value

命令:

lpushx key value


含义:

仅当参数中指定的key存在时,向关联的list的头部插入value。如果不存在,将不会插入

示例

127.0.0.1:6379> lrange mylist 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "1"
6) "2"
7) "3"
127.0.0.1:6379> lpushx mylist e
(integer) 8
127.0.0.1:6379> lrange mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
6) "1"
7) "2"
8) "3"
127.0.0.1:6379> lpushx mylistxxx eee
(integer) 0


6.2 rpushx key value

命令:

rpushx key value


含义:

在list的尾部添加元素

示例

127.0.0.1:6379> rpushx mylist 4
(integer) 9
127.0.0.1:6379> lrange mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
6) "1"
7) "2"
8) "3"
9) "4"
127.0.0.1:6379> rpushx mylistwwww  jjjj
(integer) 0


6.3 lrem key count value

命令:

lrem key count value


含义:

删除count个值为value的元素。如果count大于0,从头开始遍历并删除count个值为value的元素。

如果count小于0,从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。

示例

127.0.0.1:6379> lpush mylist2 a b c a a b b a b a
(integer) 10
127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "a"
4) "b"
5) "b"
6) "a"
7) "a"
8) "c"
9) "b"
10) "a"
127.0.0.1:6379>  lrem mylist2 2 a
(integer) 2
127.0.0.1:6379> lrange mylist2 0 -1
1) "b"
2) "b"
3) "b"
4) "a"
5) "a"
6) "c"
7) "b"
8) "a"
127.0.0.1:6379> lrem mylist2 -2 a
(integer) 2
127.0.0.1:6379> lrange mylist2 0 -1
1) "b"
2) "b"
3) "b"
4) "a"
5) "c"
6) "b"
127.0.0.1:6379> lrem mylist2 0 b
(integer) 4
127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "c"


6.4 lset key index value

命令:

lset key index value


含义:

设置链表中的index的脚标的元素值。0代表链表的头元素,-1代表链表的尾元素。操作链表的脚标不存在则抛出异常

示例

127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "c"
127.0.0.1:6379> lset mylist2 1 ccccc
OK
127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "ccccc"
127.0.0.1:6379> lset mylist2 -2 aaaaaaaa
OK
127.0.0.1:6379> lrange mylist2 0 -1
1) "aaaaaaaa"
2) "ccccc"


6.5 linsert key before|after pivot value

命令:

linsert key before|after pivot value


含义:

在pivout元素前或者后面插入value这个元素

示例

127.0.0.1:6379> lrange mylist2 0 -1
1) "aaaaaaaa"
2) "ccccc"
127.0.0.1:6379> linsert mylist2 before aaaaaaaa a1
(integer) 3
127.0.0.1:6379> lrange mylist2 0 -1
1) "a1"
2) "aaaaaaaa"
3) "ccccc"
127.0.0.1:6379> linsert mylist2 after aaaaaaaa  bbb
(integer) 4
127.0.0.1:6379> lrange mylist2 0 -1
1) "a1"
2) "aaaaaaaa"
3) "bbb"
4) "ccccc"


6.6 rpoplpush source destination

命令:

rpoplpush source destination


含义:

将链表的尾部元素弹出并添加到头部

示例

127.0.0.1:6379> lrange mylist2 0 -1
1) "a1"
2) "aaaaaaaa"
3) "bbb"
4) "ccccc"
127.0.0.1:6379> rpoplpush mylist2 mylist2
"ccccc"
127.0.0.1:6379> lrange mylist2 0 -1
1) "ccccc"
2) "a1"
3) "aaaaaaaa"
4) "bbb"
127.0.0.1:6379> lpush mylist3 333  4444
(integer) 2
127.0.0.1:6379> lrange mylist3 0 -1
1) "4444"
2) "333"
127.0.0.1:6379> rpoplpush mylist2 mylist3
"bbb"
127.0.0.1:6379> lrange mylist2 0 -1
1) "ccccc"
2) "a1"
3) "aaaaaaaa"
127.0.0.1:6379> lrange mylist3 0 -1
1) "bbb"
2) "4444"
3) "333"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: