Redis队列的应用

Redis用双链表list实现队列的

LPUSH key value [value ...]

将一个或多个值 value 插入到列表 key 的表头

如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。

如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。

当 key 存在但不是列表类型时,返回一个错误。


LPOP key

移除并返回列表 key 的头元素。

RPOP key

移除并返回列表 key 的尾元素。

-----------------------------------------------------------------------------------

RPUSH key value [value ...]

将一个或多个值 value 插入到列表 key 的表尾(最右边)。

如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。

如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。

当 key 存在但不是列表类型时,返回一个错误。

------------------------------------------------------------------------------------

BLPOP key [key ...] timeout

BLPOP 是列表的阻塞式(blocking)弹出原语。

它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止。

当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。

非阻塞行为

当 BLPOP 被调用时,如果给定 key 内至少有一个非空列表,那么弹出遇到的第一个非空列表的头元素,并和被弹出元素所属的列表的名字一起,组成结果返回给调用者。

当存在多个给定 key 时, BLPOP 按给定 key 参数排列的先后顺序,依次检查各个列表。

------------------------------------------------------------------------------------

LRANGE key start stop

返回列表 key 中指定区间内的元素,区间以偏移量startstop 指定。

下标(index)参数 startstop 都以0 为底,也就是说,以0 表示列表的第一个元素,以1 表示列表的第二个元素,以此类推。

你也可以使用负数下标,以 -1 表示列表的最后一个元素,-2 表示列表的倒数第二个元素,以此类推。

------------------------------------------------------------------------------------

# LPUSH mylist a b c
# LRANGE mylist 0 -1
# RPUSH mylist 1 2 3
# LRANGE mylist 0 -1
# LPOP mylist
# RPOP mylist
# LRANGE mylist 0 -1




List相关命令参考:http://redis.readthedocs.org/en/latest/list/index.html

Pub/Sub(发布/订阅):http://redis.readthedocs.org/en/latest/pub_sub/index.html

Redis队列应用场景很多。一种常见的应用场景是在实时计数统计中使用。比如,我们可以将需要统计的事件作为队列中的元素,每次发生事件时,将该事件添加到队列中进行计数。这样可以方便地对事件进行实时统计。 另外,Redis队列也可以用于过库存场景。比如,在电商系统中,当某个商品库存减少时,可以将商品的库存变化信息作为队列中的元素,每次库存变化时,将该信息添加到队列中进行累计。这样可以实时跟踪库存的变化情况。 此外,Redis队列还可以用于限流计数场景。当系统需要对某个操作进行限流时,可以将该操作的请求添加到队列中,每次处理请求时,从队列中取出请求进行处理。通过控制队列的长度和处理速度,可以实现对操作的限流效果。 总之,Redis队列广泛应用于需要实时计数、过库存和限流计数等场景,并且由于Redis的高性能特点,对于一般并发量不高的系统来说,都是适用的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Redis介绍及常用应用场景介绍](https://blog.youkuaiyun.com/shenziheng1/article/details/99497536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Redis5种数据类型使用场景梳理](https://blog.youkuaiyun.com/weixin_40918067/article/details/116572462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值