redis 第四章 redis的数据类型 - list
list 列表
常用的入门命令
1.lpush,rpush,lrange
📌lpush key x y z 从左侧设置key的列表值value为[x,y,z]
127.0.0.1:6379> lpush list1 1 2 3 3 4 5
(integer) 5
OK
📌rpush key x y z
从右侧设置key的列表值value为[x,y,z]
127.0.0.1:6379> lpush list2 1 2 3 3 4 5
(integer) 5
OK
📌range key start stop
获取键值为key的list列表,从start截取到stop
127.0.0.1:6379> lrange list1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
⭐有些同学是否觉得有疑问,为什么不是1,2,3,4,5,所以有图有真相,见下图
2.lpop,rpop
📌lpop key 从左侧弹出以key为键值的列表list第一个值
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lpop list1
"5"
📌rpop key 从右侧弹出以key为键值的列表list第一个值
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> rpop list1
"1"
⭐有图有真相,见下图
3.lindex,llen,lrem ,ltrim
📌lpindex key index 获取键位key的列表list的下标为index的值
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lpindex list1 1
(integer) 4
📌llen key 获取键位key的列表list的size大小
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> llen list1
(integer) 5
📌lrem key count value 删除键w为key的列表中的N个value
127.0.0.1:6379> lpush list1 1 1 2 2 3
(integer) 5
127.0.0.1:6379> lrem list1 2 2
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "3"
2) "1"
3) "1"
📌ltrim key start stop 截取键位key的列表中的下标以start开始到stop结束并再赋值给key值
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> ltrim list1 0 2
1) "5"
2) "4"
3) "3"
4.rpoplpush
📌rpoplpush s d 将目标s的列表值从右侧弹出并复制给d,形成一个新键值
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> rpoplpush list1 list2
"1"
127.0.0.1:6379> lrange list1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
127.0.0.1:6379> lrange list2 0 -1
1) "1"
5.lset
📌lset key index v 将key的列表值的下标为index的值替换为v
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lset list1 0 2
OK
127.0.0.1:6379> lrange list1 0 -1
1) "2"
2) "4"
3) "3"
4) "2"
5) "1"
6.linsert
📌linsert key before/after v1 v2 将key的列表值为v1的后面或前面填入v2
127.0.0.1:6379> lpush list1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> linsert list1 after 2 0
(integer) 6
127.0.0.1:6379> lrange list1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "0"
6) "1"
🎌 以下备注均参考周阳老师语录
list注意事项:
它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了。
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。
此章到这里啦,我是JavaDog,欲知后事如何,请听下章分解
如果意犹未尽,快来JavaDog博客瞅瞅,你想要的都在里面😁
🔥 下章剧透,redis 第五章 redis的数据类型 - Set