[Redis]分布式锁与Redisson

分布式锁本质上要实现的目标就是在 Redis 里面占一个“茅坑”,当别的进程也要来占时,发现已经有人蹲在那里了,就只好放弃或者稍后再试。


占坑一般是使用 setnx(set if not exists) 指令,只允许被一个客户端占坑。先来先占, 用完了,再调用 del 指令释放茅坑。
尽管Redis 2.8中加入了原子性的setnx+expire:set name zhangsan ex 100 nx。但仍需要考虑到超时续命、可重入性等问题。
redis分布式锁的各种坑这篇文章讲的就是一步步从单机redis蜕变到Redisson,一目了然。

延时队列

延时队列的理解可以看这里:你知道Redis可以实现延迟队列吗?

延时队列可用Redis的zset来实现。Redis充当延时队列的好处在于,它不像Rabbitmq、Kafka那样有一堆繁琐的特性和步骤。坏处在于其实现 ack 机制的成本相对较高,不适用于极致追求可靠性保障。
优势
(1)Redis zset支持高性能的 score 排序。
(2)Redis是在内存上进行操作的,速度非常快。
(3)Redis可以搭建集群,当消息很多时候,我们可以用集群来提高消息处理的速度,提高可用性。
(4)Redis具有持久化机制,当出现故障的时候,可以通过AOF和RDB方式来对数据进行恢复,保证了数据的可靠性

位图

Last modification:October 15th, 2021 at 02:47 pm
喵ฅฅ