redis吊打面试官,redis面试必问( 二 )


分布式锁为解决分布式系统中多个应用同时访问同一个资源的问题 。一般是在两个场景下会防止对同一个资源的重复访问:提高效率 。
使用redis实现的分布式锁原理是什么?1、说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了 , 非常的简便易用 。
2、如图所示啊,石杉大佬画的redisson分布式锁原理 。大概总结下,保证我们的key落到一个集群里 , 并且加锁操作是基于lua脚本的原子性操作,对于锁延迟由watch dog控制 。
3、redis分布式锁:实现原理利用redis中的set命令来实现分布式锁 。从Redis 12版本开始,set可以使用下列参数:SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX] EX second :设置键的过期时间为second秒 。
4、分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性 。
Redis怎么实现分布式锁我们需要封装一个公共的Redis访问工具类 。该类需要注入RedisTemplate实例和ValueOperations实例,使用ValueOperations实例是因为Redis实现的分布式锁使用了最简单的String类型 。
如果没有其他线程占用,则就可以通过添加分布式锁来占用这个资源,然后再执行后续的任务,在任务执行完成之后 , 再释放分布式锁,其他线程就可以继续使用这个资源了 。
原理很简单,set 一个 锁-key,如果成功则说明加锁成功,反之则失败 。
此时就需要使用分布式锁了 。简而言之,分布式锁就是用来控制同一时刻,只有一个线程可以访问被保护的资源 。可以使用SETNX key value命令实现互斥的特性 。
使用分布式锁要满足的几个条件:系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现)共享资源(各个系统访问同一个资源,资源的载体可能是传统关系型数据库或者NoSQL) 。
Redission 实现分布式锁的思想很简单,无论是主从集群还是 Redis Cluster 集群,它会对集群中的每个 Redis,挨个去执行设置 Redis 锁的脚本,也就是集群中的每个 Redis 都会包含设置好的锁数据 。我们通过一个例子来介绍一下 。
关于redis吊打面试官和redis面试必问的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

推荐阅读