redis中list列表类型常用命令
redis中list列表类型常用命令
单键多值
Redis 列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
下面介绍一些List类型的常用命令
- 从指定key对应List左边插入值:lpush key value1 value2 value3......,eg:
127.0.0.1:6379> lpush key1 k1v1 k1v2 k1v3
(integer) 3
- 从指定key对应List左边开始获取指定范围的value:lrange key 起始位置 结束位置(-1表示末尾),eg:
127.0.0.1:6379> lrange key1 0 -1
1) "k1v3"
2) "k1v2"
3) "k1v1"
127.0.0.1:6379> lrange key1 0 1
1) "k1v3"
2) "k1v2"
- 从指定key对应List右边插入值:rpush key value1 value2 value3......,eg:
127.0.0.1:6379> rpush key2 k2v1 k2v2 k2v3
(integer) 3
127.0.0.1:6379> lrange key2 0 -1
1) "k2v1"
2) "k2v2"
3) "k2v3"
- 从指定key对应List左边|右边移除一个值:lpop|rpop key,eg:
127.0.0.1:6379> lrange key1 0 -1
1) "k1v3"
2) "k1v2"
3) "k1v1"
127.0.0.1:6379> lpop key1
"k1v3"
127.0.0.1:6379> lrange key1 0 -1
1) "k1v2"
2) "k1v1"
127.0.0.1:6379> rpop key1
"k1v1"
127.0.0.1:6379> lrange key1 0 -1
1) "k1v2"
# 当List中值全部移除,对应key也没了
127.0.0.1:6379> lpop key1
"k1v2"
127.0.0.1:6379> keys *
1) "key2"
- 将key1对应List从右边取出一个值插入到key2对应List左边:rpoplpush key1 key2
127.0.0.1:6379> lrange key1 0 -1
1) "k1v3"
2) "k1v2"
3) "k1v1"
127.0.0.1:6379> lrange key2 0 -1
1) "k2v1"
2) "k2v2"
3) "k2v3"
127.0.0.1:6379> rpoplpush key1 key2
"k1v1"
127.0.0.1:6379> lrange key1 0 -1
1) "k1v3"
2) "k1v2"
127.0.0.1:6379> lrange key2 0 -1
1) "k1v1"
2) "k2v1"
3) "k2v2"
4) "k2v3"
- 获取key对应List中指定下标值:lindex key 下标,eg:
127.0.0.1:6379> lrange key2 0 -1
1) "k1v1"
2) "k2v1"
3) "k2v2"
4) "k2v3"
127.0.0.1:6379> lindex key2 0
"k1v1"
- 获取key对应List的长度:llen key,eg:
127.0.0.1:6379> lrange key2 0 -1
1) "k1v1"
2) "k2v1"
3) "k2v2"
4) "k2v3"
127.0.0.1:6379> llen key2
(integer) 4
- 从指定key对应List左边移除n个value:lrem key n value,eg:
127.0.0.1:6379> lrange key2 0 -1
1) "k1v1"
2) "k2v1"
3) "k2v2"
4) "k2v3"
127.0.0.1:6379> lrem key2 1 k1v1
(integer) 1
127.0.0.1:6379> lrange key2 0 -1
1) "k2v1"
2) "k2v2"
3) "k2v3"
- 从指定key对应List左边截取指定位置value:ltrim key 起始位置 结束位置,eg:
127.0.0.1:6379> lrange key2 0 -1
1) "k2v1"
2) "k2v2"
3) "k2v3"
127.0.0.1:6379> ltrim key2 0 1
OK
127.0.0.1:6379> lrange key2 0 -1
1) "k2v1"
2) "k2v2"
- 将指定key对应List指定下标的value替换成新的value:lset key 下标 value,eg:
127.0.0.1:6379> lrange key2 0 -1
1) "k2v1"
2) "k2v2"
127.0.0.1:6379> lset key2 0 k2v1-new
OK
127.0.0.1:6379> lrange key2 0 -1
1) "k2v1-new"
2) "k2v2"
- 在指定key对应List的指定value前面插入值:linsert|rinsert key before|after value value(后面的value是插入的值),eg:
127.0.0.1:6379> lrange key2 0 -1
1) "k2v1-new"
2) "k2v2"
127.0.0.1:6379> linsert key2 before k2v1-new k2v-insert
(integer) 3
127.0.0.1:6379> lrange key2 0 -1
1) "k2v-insert"
2) "k2v1-new"
3) "k2v2"
127.0.0.1:6379> linsert key2 after k2v1-new k2v-insert-after
(integer) 4
127.0.0.1:6379> lrange key2 0 -1
1) "k2v-insert"
2) "k2v1-new"
3) "k2v-insert-after"
4) "k2v2"
记得快乐