本来看完这节课,就联想到了当前项目中的一个现状,当前项目获取锁的方式是往数据库表中插入唯一主键,如果插入成功就获得锁,如果插入失败,就没有获得锁。等业务处理完之后再主动删除这条数据。但是这样存在的问题就是很容易造成死锁。
看到redis的这节课之后,我就立马茅塞顿开,第二天就去找领导说了我的想法,利用老师说的redis set locktarget 12345 ex 10 nx 获取锁并且可以设置超时时间的方案,想替代现有的实现方式。结果领导问了句,业务代码执行时间大于设置的过期时间怎么处理?怎么保证在设置的时间内执行完业务代码?当时就傻眼了。。。。好尴尬。