按照插入顺序排序

储存的数据类型 字符串
储存数据的格式 底层使用双向链表的存储结构实现,类似 LinkedList
最大储存容量 2^23-1个数据

基本命令:

添加数据:

  1. lpush key value1 value2 ... //左边存放数据
  2. rpush key value1 value2 ... //右边存放数据

获取数据:

  1. lrange key start end //指定要获取的key、起始索引和结束索引
  2. lindex key index //指定要获取的key、索引位置

注:当 start为0、end为-1 时,意为获取所有的数据。当 start为0、end为其他负数 时,为获取 0 ~ ( 数据总数 - end的绝对值 +1) 的数据。

获取数据数量:

  1. llen key

获取并移除数据:

  1. lpop key //获取并以移除左边的第一个数据
  2. rpop key //获取并以移除右边的第一个数据

注:如果 key中没有数据,会获取到nil。

拓展命令:

指定时间内阻塞获取并移除数据:

  1. blpop key1 key2 ... seconds //阻塞获取左边数据
  2. brpop key1 key2 ... seconds //阻塞获取右边数据

注:
如果没有获取到就一直尝试获取,直到时间结束;
如果是获取多个键,一旦有一个键能弹出元素,立刻返回结果;
如果多个客户端对同一个value进行阻塞获取,最先执行命令客户端可以获取到弹出的值,其他则会继续阻塞,原因是 Redis执行命令是先进入内部队列在单线材执行,因此具有时间优先级;

移除指定数据:

  1. lrem key count value //移除指定key的某个value的数量

向某个元素前或后插入元素:

  1. linsert key before|after pivot value //在key的pivot元素前或后插入value元素

使用案例:

朋友圈点赞:

List - 图1
点赞的数据:

  1. lpush weixin user1 user2 user3 user4 user5

取消点赞:

  1. lrem weixin 1 user3

分页查询:

把所有数据放入 List中,通过指定 start 和 end 进行分页操作。

关注的人:

新添加关注时,最新关注的用户在立列表的最上方。

日志统一管理:

将不同服务器的日志统一保存到Redis中,仅需对Redis管理即可取代以往需要到不同服务器查看日志的问题。