按照插入顺序排序
储存的数据类型 | 字符串 |
---|---|
储存数据的格式 | 底层使用双向链表的存储结构实现,类似 LinkedList |
最大储存容量 | 2^23-1个数据 |
基本命令:
添加数据:
lpush key value1 value2 ... //左边存放数据
rpush key value1 value2 ... //右边存放数据
获取数据:
lrange key start end //指定要获取的key、起始索引和结束索引
lindex key index //指定要获取的key、索引位置
注:当 start为0、end为-1 时,意为获取所有的数据。当 start为0、end为其他负数 时,为获取 0 ~ ( 数据总数 - end的绝对值 +1) 的数据。
获取数据数量:
llen key
获取并移除数据:
lpop key //获取并以移除左边的第一个数据
rpop key //获取并以移除右边的第一个数据
拓展命令:
指定时间内阻塞获取并移除数据:
blpop key1 key2 ... seconds //阻塞获取左边数据
brpop key1 key2 ... seconds //阻塞获取右边数据
注:
如果没有获取到就一直尝试获取,直到时间结束;
如果是获取多个键,一旦有一个键能弹出元素,立刻返回结果;
如果多个客户端对同一个value进行阻塞获取,最先执行命令客户端可以获取到弹出的值,其他则会继续阻塞,原因是 Redis执行命令是先进入内部队列在单线材执行,因此具有时间优先级;
移除指定数据:
lrem key count value //移除指定key的某个value的数量
向某个元素前或后插入元素:
linsert key before|after pivot value //在key的pivot元素前或后插入value元素
使用案例:
朋友圈点赞:
点赞的数据:
lpush weixin user1 user2 user3 user4 user5
取消点赞:
lrem weixin 1 user3
分页查询:
把所有数据放入 List中,通过指定 start 和 end 进行分页操作。
关注的人:
日志统一管理:
将不同服务器的日志统一保存到Redis中,仅需对Redis管理即可取代以往需要到不同服务器查看日志的问题。