(二)Redis 数据类型之字符串List
List的实现原理是双向循环链表
查找方向可以是从左往右也可以是从右往左,但是要实现从右往左还需要终端节点的地址,所以通常会设计成双向的循环链表;
若链表为空:
lpush
1 | lpush key element [element ...] |
从左边插入元素, 从左边依次追加进栈,先进后出,后进先出
rpush
1 | rpush key element [element ...] |
从右边插入元素, 从右边依次追加进队列,先进先出,后进后出
lrange
根据起止下标查询列表元素
LRANGE key start stop
start: 从指定下标开始检索
stop: 检索几个元素 -1 表示全部元素
1 | lrange key 0 -1 #表示查看全部元素 |
lpushx
1 | lpushx key element [element ...] |
与string类型中的nx类似,只有当list存在时才会从左边依次追加元素。
rpushx
1 | rpushx key element [element ...] |
与string类型中的nx类似,只有当list存在时才会从右边依次追加元素。
linsert
从list中指定的元素的前/后 插入一个新元素:
linsert key BEFORE|AFTER pivot element
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 lrange mylist3 0 -1 查看列表
1) "-1"
2) "0"
3) "1"
linsert mylist3 before -1 -2 在-1的前面插入-2
lrange mylist3 0 -1
1) "-2"
2) "-1"
3) "0"
4) "1"
linsert mylist3 after 1 2 在1的后面插入2
lrange mylist3 0 -1
1) "-2"
2) "-1"
3) "0"
4) "1"
5) "2"
lrem
lrem key count element
从指定列表左侧开始,删除count个指定元素element
1 | lrem mylist3 1 2 从左侧开始删除1个2 |
lset
lset key index element
根据下标修改元素内容,下标从左边算起,以0开始:
1 | lrange mylist 0 -1 |
ltrim
ltrim key start stop
将原列表截取为从下标start到下标stop闭区间的列表
1 | lrange mylist 0 -1 |
llen
llen key
查看指定List中元素的个数
1 | llen mylist |
lindex
llindex key index
根据指定数组index检索元素
1
2
3
4
5
6 lrange mylist 0 -1
1) "-1"
2) "test"
3) "test3"
lindex mylist 0 ##查找第0个元素
"-1"
lpop
lpop key
左侧消费数据,消费完删除, 这里可以把List当成一个消息队列去看。
rpop
rpop key
从右侧消费数据,消费完删除