Redis 链表结构 和 常用命令
Redis 数据结构 --链表(linked-list)
命令 | 说明 | 备注 |
---|---|---|
lpush key node1 [node2 ...] | 把节点 node1 加入到 链表最左边 | 如果是 node1、node2 ....noden 这样加入,那么链表开头从左到右的顺序是 noden ... node2、node1 |
rpush key nodel [dode2 ...] | 把节点 node1 加入到 链表最右边 | 如果是 nodel、node2 .... noden 这样加入,那么链表结尾从左到右的顺序是 node1、node2...noden |
lindex key index | 读取下标为 index 的节点 | 返回节点字符串,从0开始算 |
llen key | 求链表的长度 | 返回链表节点数 |
lpop key | 删除左边第一个节点,并将其返回 | -- |
linsert key [befor after] piovt | 插入一个节点 node ,并且可以指定在值为pivot的节点的前面(before)或者 后面 (after) | 如果 list 不存在,则报错,如果没有值为对应pivot的,也会插入失败返回 -1 |
lpushx list node | 如果存在key为list的链表,则插入节点node,并且作为从左到右的 第一个节点 | 如果list 不存在 则失败 |
rpushx list node | 如果存在key为 list 的链表,则插入节点node,并且作为从左到右的 最后一个节点 | 如果 list 不存在 则失败 |
lrange list start end | 获取链表 list 从 start下标 到 end下标的节点值 | 包含 start 和 end 下标的值 |
lrem list count value | 如果 count 为 0,则删除所有值等于value的节点,如果count 不是 0,则先对count取绝对值,假设记为abs,然后从左到右删除不大于 abs 个 等于 value的节点 | 注意,count 为整数,如果是负数,则Redis会先求取其绝对值,然后传递到后台操作 |
lset key index node | 设置列表下标为index的节点的值为node | -- |
ltrim key start stop | 修剪链表,只保留从start 到 stop 的区间的节点,其余的都删除掉 | 包含 start 和 end 的下标的节点会保留 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
C:\Users\oukele>redis-cli 127.0.0.1:6379> lpush role oukele dakele xiaokele (integer) 3 127.0.0.1:6379> lindex role 0 "xiaokele" 127.0.0.1:6379> rpush role oukele1 (integer) 4 127.0.0.1:6379> lindex role 0 "xiaokele" 127.0.0.1:6379> llen role (integer) 4 127.0.0.1:6379> lpop role "xiaokele" 127.0.0.1:6379> rpop role "oukele1" 127.0.0.1:6379> llen role (integer) 2 127.0.0.1:6379> linsert role before dakele dadakele (integer) 3 127.0.0.1:6379> linsert role after dakele dadadakele (integer) 4 127.0.0.1:6379> lrange role 0 10 1) "dadakele" 2) "dakele" 3) "dadadakele" 4) "oukele" 127.0.0.1:6379> lpush role lala wuwu oooo (integer) 7 127.0.0.1:6379> lrange role 0 10 1) "oooo" 2) "wuwu" 3) "lala" 4) "dadakele" 5) "dakele" 6) "dadadakele" 7) "oukele" 127.0.0.1:6379> lrem role 3 dakele (integer) 1 127.0.0.1:6379> lrange role 0 10 1) "oooo" 2) "wuwu" 3) "lala" 4) "dadakele" 5) "dadadakele" 6) "oukele" 127.0.0.1:6379> ltrim role 3 6 OK 127.0.0.1:6379> lrange role 0 10 1) "dadakele" 2) "dadadakele" 3) "oukele" 127.0.0.1:6379> |