常见的使用场景对应面试问题2:
- Redis分布式锁如何实现?
- Redis实现分布式锁如何合理的控制锁的有效时长?
Redis其他面试问题:
- Redis集群有哪些方案,知道吗?
- 什么是 Redis 主从同步你们使用Redis是单点还是集群?哪种集群?
- Redis分片集群中数据是怎么存储和读取的?
- Redis集群脑裂
- 怎么保证Redis的高并发高可用?
- 你们用过Redis的事务吗?事务的命令有哪些?
- Redis是单线程的,但是为什么还那么快?
下面将逐一进行解析
Redis分布式锁问题
问题:你在最近的项目中哪些场景使用了redis呢?redis分布式锁,是如何实现的?
结合自己项目业务进行回答,通常情况下,分布锁使用场景如下:
集群情况下的定事任务,抢单,幂等性场景。
例如:抢券场景。
正常流程
超卖情况
单体项目,加锁解决。
而在集群的项目中存在多个JVM,所以每个JVM加锁都可以查到一条数据。如下:
而这种集群情况下,就需要加入分布式锁了。
Redis分布式锁实现
Redis实现分布式锁主要利用Redis的setnx命令。setnx是SET if not exists(如果不存在,则 SET)的简写。
如何实现分布式锁
使用的redisson实现的分布式锁,底层是setnx和lua脚本(保证原子性)