Lists(列表) 常用命令有:
一、增
127.0.0.1:6379> lpush list01 1 2 3 4 rr // 向列表左侧添加 5 个数据
(integer) 5
127.0.0.1:6379> lrange list01 0 -1 // 查询出类表所有数据 从上到下索引是 0, 1, 2 ...
1) "rr"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> rpush list02 0 1 2 3 4 // 向列表左侧添加数据
(integer) 5
127.0.0.1:6379> lrange list02 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
二、删
127.0.0.1:6379> lpop list01 // 弹出最左侧数据,每次弹出一个
"rr"
127.0.0.1:6379> rpop list02 // 弹出右侧数据,每次弹出一个
"4"
127.0.0.1:6379> lrange list02 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> lrem list03 2 2 // LREM KEY_NAME COUNT VALUE 删除两个 2
(integer) 2
三、改
127.0.0.1:6379> lrange list01 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
127.0.0.1:6379> lrange list02 0 -1
1) "0"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> rpoplpush list01 list02 // 弹出 list01 的左边数据给列表 list02
"2"
127.0.0.1:6379> lrange list02 0 -1
1) "2"
2) "0"
3) "1"
4) "2"
5) "3"
127.0.0.1:6379> lrange list01 0 -1
1) "5"
2) "4"
3) "3"
127.0.0.1:6379> lset list01 0 x // 设置索引 0 的值为 x
OK
127.0.0.1:6379> lrange list01 0 -1
1) "x"
2) "4"
3) "3"
127.0.0.1:6379> linsert list01 before x y // 在 x 前插入 y
(integer) 4
127.0.0.1:6379> lrange list01 0 -1
1) "y"
2) "x"
3) "4"
4) "3"
127.0.0.1:6379> linsert list01 after x z // 在 x 后插入 y
(integer) 5
127.0.0.1:6379> lrange list01 0 -1
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
8) "4"
9) "3"
10) "2"
11) "1"
127.0.0.1:6379> ltrim list01 2 5 // 截取索引 2 到 5 的值 并重新赋值给列表
OK
127.0.0.1:6379> lrange list01 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
四、查
127.0.0.1:6379> lindex list02 1 // 输出索引 1 的值
"1"
127.0.0.1:6379> lindex list02 4
(nil)
127.0.0.1:6379> lindex list02 3
"3"
127.0.0.1:6379> llen list02 // 返回列表的长度
(integer) 4
五、性能总结
- 是一个字符串链表,left、right 都可以插入添加
- 如果键不存在,创建新的链表
- 如果键已存在,新增内容
- 链表的操作无论是头和尾效率都极高,但是假如是对中间元素进行操作,效率就很惨淡了