redis list数据类型的使用

介绍

简单的字符串列表,底层实现是双向链表,可以在头和尾 添加/移除 元素,通过索引下标操作中间的节点性能比较差,按照插入顺序排序

按照插入顺序排序,每个列表最多可以存储 2^{32} - 1 个元素(40多亿)

应用场景

  1. 排行榜
    在电商平台排行榜、微博热搜、抖音排行榜,需要频繁查询这些排行榜,可以通过redis的SortedSet进行热点数据的排序。
    注意: 适用定时更新的排行榜,不适合动态更新的排行榜(类似唱歌比赛排行榜)

  2. 消息队列
    由于redis有list push和list pop这样的命令,所以能够很方便的执行队列操作。
    比如:双十一的支付操作

    一般使用Kafka、NSQ、RabbitMQ等成熟的消息队列

命令

http://redisdoc.com/list/index.html
https://www.runoob.com/redis/redis-lists.html

LPUSH
LPUSHX
RPUSH
RPUSHX
LPOP
RPOP
RPOPLPUSH
LREM
LLEN
LINDEX
LINSERT
LSET
LRANGE
LTRIM
BLPOP
BRPOP
BRPOPLPUSH

例子-排行榜

添加开发语言排行榜

>rpush lang_charts c java c++
(integer) 3

读取排行榜

>lrange lang_charts 0 -1
1) "c"
2) "java"
3) "c++"

更新排行榜

先清空

>ltrim lang_charts 1 0

再添加开发语言

>rpush lang_charts python js c#
(integer) 3

例子-队列

添加订单

订单数据是json格式

>rpush orders "{'name':'《java入门到放弃》','price':'20','num':1,'user_id':'123'}"

获取(并移除)第一个订单

> lpop orders
{'name':'《java入门到放弃》','price':'20','num':1,'user_id':'123'}"

原文出处:/show_1IXGtELzMnv.html