本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令。redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string、hash、list、set、sorted set。
redis的五种数据结构和相关指令之List
列表list
Redis的List是链表型的数据结构,用来存储多个有序的字符串,一个列表最多可存2的32次方减1个元素,可以使用LPUSH/RPUSH/LPOP/RPOP等命令在List的两端执行插入元素和弹出元素的操作。虽然List也支持在特定index上插入和读取元素的功能,但其时间复杂度较高(O(N)),应小心使用。
a、常用命令
添加命令:
rpush james a b c //从右向左插入cba, 返回值3
lrange james 0 -1 //从左到右获取列表所有元素 返回 c b a
lpush key 11 22 33 //从左向右插入11 22 33
linsert james before b test //在b之前插入test, after为之后,
如果有相同的元素,以从左到右第一个为准,使用lrange james 0 -1 查看,如下图
查找命令:
lrange key start end //索引下标特点:从左到右为0到N-1
lindex key -1 //返回最右末尾a,-2返回b
llen key //返回当前列表长度
删除命令
lpop key //把最左边的第一个元素c删除
rpop key //把最右边的元素a删除lrem key count value//删除指定元素
lrem test 4 b //从左右开始删除b的元素,删除4个,若不够4个则删除已有的ltrim key start end
ltrim name 1 3 //只保留从第2到第4(下标从0开始)的元素,其它全删
修改
lset key index value
lset name 2 java // 把第3个元素z替换成java
应用场景
每个用户有多个订单key为 order:1 order:2 order:3, 结合hmset
hmset order:1 orderId 1 money 36.6 time 2018-01-01
hmset order:2 orderId 2 money 38.6 time 2018-01-01
hmset order:3 orderId 3 money 39.6 time 2018-01-01
把订单信息的key放到队列
lpush user:1:order order:1 order:2 order:3
每新产生一个订单,
hmset order:4 orderId 4 money 40.6 time 2018-01-01
追加一个order:4放入队列第一个位置
lpush user:1:order order:4
当需要查询用户订单记录时:
List orderKeys = lrange user:1 0 -1 //查询user:1 的所有订单key值for(Order order: orderKeys){hmget order:1}
————————————————
版权声明:本文为CSDN博主「lingengy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/w1lgy/article/details/84376925