赞
踩
在 Redis 中 , 通过 一个 键 Key , 可以 存储多个值 , 这些值存放在一个 List 列表中 ;
List 列表 是 字符串列表 , 元素类型是 字符串 ;
Redis 中的 List 列表 本质是 双向链表 , 可以将 字符串元素 添加到 列表的头部 或 尾部 ;
列表 对于 两端 的 操作 性能较高 , 对于 通过 索引小标 查询 元素的 性能较低 ;
Redis 中的 List 列表 , 底层由 快速链表 QuickList 实现 ;
快速链表 是 链表 和 压缩列表 结合起来的产物 ;
根据下标获取元素 : 获取从 start 索引开始 , 到 stop 索引结束的元素值 ;
lrange key start stop
如果要 查询 键 对应的 List 列表值 , 使用
lrange key 0 -1
命令即可 ;
代码示例 :
127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
4) "123"
127.0.0.1:6379> lrange name 0 2
1) "Jerry"
2) "Tom"
3) "abc"
127.0.0.1:6379>
执行
lindex key index
命令 , 可以 获取 key 列表 index 索引的值 ;
代码示例 :
127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
127.0.0.1:6379> lindex name 2
"abc"
127.0.0.1:6379>
127.0.0.1:6379>
执行
llen key
命令 , 可以 获取 key 列表 的长度 ;
代码示例 :
127.0.0.1:6379> lrange name 0 -1
1) "Jerry"
2) "Tom"
3) "abc"
127.0.0.1:6379> len name
(error) ERR unknown command 'len'
127.0.0.1:6379>
127.0.0.1:6379> llen name
(integer) 3
127.0.0.1:6379>
插入值 :
lpush key value1 value2 value3 ...
rpush key value1 value2 value3 ...
如果要 查询 键 对应的 List 列表值 , 使用
lrange key 0 -1
命令即可 ;
代码示例 :
127.0.0.1:6379> lpush name Tom Jerry Jack (integer) 3 127.0.0.1:6379> lrange name 0 -1 1) "Jack" 2) "Jerry" 3) "Tom" 127.0.0.1:6379> 127.0.0.1:6379> rpush name abc 123 456 (integer) 6 127.0.0.1:6379> lrange name 0 -1 1) "Jack" 2) "Jerry" 3) "Tom" 4) "abc" 5) "123" 6) "456" 127.0.0.1:6379>
执行
linsert key before/after value newValue
命令 , 可以 在 key 列表 的 value 值 前面 / 后面 插入新值 newValue ;
代码示例 : 在 age 列表中 , 元素 18 之前 , 插入值 110 ;
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "18"
3) "17"
4) "16"
127.0.0.1:6379> linsert age before 18 110
(integer) 5
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "18"
4) "17"
5) "16"
127.0.0.1:6379>
移除值 :
lpop key
rpop key
如果要 查询 键 对应的 List 列表值 , 使用
lrange key 0 -1
命令即可 ;
代码示例 :
127.0.0.1:6379> lrange name 0 -1 1) "Jack" 2) "Jerry" 3) "Tom" 4) "abc" 5) "123" 6) "456" 127.0.0.1:6379> 127.0.0.1:6379> lpop name "Jack" 127.0.0.1:6379> lrange name 0 -1 1) "Jerry" 2) "Tom" 3) "abc" 4) "123" 5) "456" 127.0.0.1:6379> rpop name "456" 127.0.0.1:6379> lrange name 0 -1 1) "Jerry" 2) "Tom" 3) "abc" 4) "123" 127.0.0.1:6379>
执行
lrem key n value
命令 , 可以 在 key 列表 中 删除左侧的 n 个 value 值 ;
代码示例 : 在 age 列表中 , 删除左侧的 2 个 18 元素 , 这里只有一个 18 元素 , 直接删除 ;
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "18"
4) "17"
5) "16"
127.0.0.1:6379>
127.0.0.1:6379> lrem age 2 18
(integer) 1
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "17"
4) "16"
127.0.0.1:6379>
执行
rpoplpush key1 key2
命令 , 可以 从 key1 列表右边取出一个值 , 放在 key2 列表的左边 ;
代码示例 :
127.0.0.1:6379> lrange age 0 -1 1) "18" 2) "17" 3) "16" 127.0.0.1:6379> lrange name 0 -1 1) "Jerry" 2) "Tom" 3) "abc" 4) "123" 127.0.0.1:6379> 127.0.0.1:6379> rpoplpush name age "123" 127.0.0.1:6379> lrange age 0 -1 1) "123" 2) "18" 3) "17" 4) "16" 127.0.0.1:6379>
执行
lset key index value
命令 , 可以 在 key 列表 中 将 第 index 索引位置 的 元素 替换为 value 值 ;
代码示例 : 在 age 列表中 , 将第 2 个元素替换成 888 值 ;
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "17"
4) "16"
127.0.0.1:6379> lset age 2 888
OK
127.0.0.1:6379> lrange age 0 -1
1) "123"
2) "110"
3) "888"
4) "16"
127.0.0.1:6379>
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。