8-1分布式锁有哪些实现方式?redis是如何实现分布式锁的?讲一讲Redisson实现分布式锁的原理?
分布式锁有两种实现方式基于MySQL的唯一约束基于Redis的 setnx key value
redis 的setnx命令只有当key不存在才能写入值,当一个线程写入值后其他线程再写入就不可以了
就可以实现互斥和多JVM实例访问,线程执行完毕后可以删除Key于是其他线程就可以再写入了
当一个客户端加锁成功后,会在Redis缓存一个过期时间为30秒的key,同时会激活一个“看门狗”程序每隔10秒查看key是否存在,如果存在则延长生存时间。同时其他客户端会访问Reids是否能加锁。
8-2补充:介绍一下你们项目中的优惠券功能
我们项目中优惠卷功能除了的发放优惠卷,查询优惠卷,领取优惠卷,兑换优惠卷功能,还有优惠卷方案推荐功能,该功能会计算优惠金额最大的优惠卷,当优惠卷优惠金额一样时会优先选择优惠范围小的优惠卷。