redis学习笔记5--列表类型

"list"可以存储一个有序的字符串列表,常用的操作是向列表的两端添加元素或者获得列表的某个片段。
列表类型内部使用"double linked list"实现,所以向列表两端添加元素的时间复杂度为O(1)。

// 命令操作
1. 向列表左端添加元素
127.0.0.1:6379> lpush numbers 1
(integer) 1                    # 返回值表示增加元素后列表的长度
127.0.0.1:6379> lpush numbers 2
(integer) 2
127.0.0.1:6379> lpush numbers 3
(integer) 3
127.0.0.1:6379> lpush numbers 4 5  # 同时增加多个元素
(integer) 5

说明: 

上述列表的左端插入在列表中的存储是这个样子排列的:
[5, 4, 3, 2, 1]
--------------->

2. 向列表右端添加元素
127.0.0.1:6379> rpush numbers -1
(integer) 6
127.0.0.1:6379> rpush numbers -2 -3 -4 -5
(integer) 10
说明:
上述列表的左端插入在列表中的存储是这个样子排列的:
[-1, -2, -3, -4, -5]
<--------------------

3. 从两端弹出元素
127.0.0.1:6379> lpop numbers
"5"	# 返回被弹出的值
127.0.0.1:6379> rpop numbers
"-5"

注:搭配lpush+lpop(rpush+rpop)模拟‘栈’的操作;搭配lpush+rpop(rpush+lpop)模拟‘队列’操作。 

4. 获取列表中元素的个数
127.0.0.1:6379> llen numbers
(integer) 8
5. 获得列表片段
127.0.0.1:6379> lrange numbers 0 7
1) "4"
2) "3"
3) "2"
4) "1"
5) "-1"
6) "-2"
7) "-3"
8) "-4"
127.0.0.1:6379> lrange numbers -2 -1
1) "-3"
2) "-4"
127.0.0.1:6379> lrange numbers 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "-1"
6) "-2"
7) "-3"
8) "-4"
6. 删除列表中的指定的值
说明:删除操作有点复杂。
命令模版:
lrem key count value
解释:删除列表中前count个值为value的元素,返回值是实际删除的元素个数。根据count值的不同,lrem命令的执行方式会有所差异。
1)count>0 ,从列表左边删除前count个值为value的元素。
2)count<0 ,从列表右边删除前|count|个值为value的元素。
3)count=0 ,删除所有值为value的元素。
127.0.0.1:6379> lrange numbers 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "-1"
6) "-2"
7) "-3"
8) "-4"
127.0.0.1:6379> lrem numbers -1 2   # 例如,从右端开始,寻找1个值为2的元素删除。
(integer) 1
127.0.0.1:6379> lrange numbers 0 -1
1) "4"
2) "3"
3) "1"
4) "-1"
5) "-2"
6) "-3"
7) "-4"

7. 获得/设置指定索引的元素值 

127.0.0.1:6379> lindex numbers 0
"4"
127.0.0.1:6379> lindex numbers -1
"-4"
127.0.0.1:6379> lset numbers 0 5
OK
127.0.0.1:6379> lindex numbers 0
"5"

8. 只保留列表指定片段 

127.0.0.1:6379> lrange numbers 0 -1
1) "5"
2) "3"
3) "1"
4) "-1"
5) "-2"
6) "-3"
7) "-4"
127.0.0.1:6379> ltrim numbers 1 2
OK
127.0.0.1:6379> lrange numbers 0 -1
1) "3"
2) "1"

9. 向列表中插入元素 

127.0.0.1:6379> linsert numbers after 1 18
(integer) 3
127.0.0.1:6379> lrange numbers 0 -1
1) "3"
2) "1"
3) "18"
127.0.0.1:6379> linsert numbers before 1 0
(integer) 4
127.0.0.1:6379> lrange numbers 0 -1
1) "3"
2) "0"
3) "1"
4) "18"

你可能感兴趣的:(redis,list)