讲的很好,转载的!
https://www.cnblogs.com/rjzheng/p/9096228.html
redis 分布式锁和原子操作面试(setnx实现分布式锁,如果key不存在,则设置值,如果setnx设置成功了,后面的操作异常了,则,锁永远无法释放 ,其他的想设置值的操作也无法进行!后来redis更新版本后,set中有设置过期时间等参数,实现分布式操作,注意还有setex情况)
推荐使用set操作
jedis.set("1","2","NX","EX",3);
其中:1位key,2为值,第三个参数为设置条件:NX表示当不存在的时候设置,如果是XX,则表示存在的时候设置;
第4个参数是过期时间类型设置:EX表示秒,PX表示毫秒;3表示过期时间的具体值!
例如:如果key_a不存在的情况下,给key_a设置值为3000,86397秒后过期!
resource.set("key_a","3000","NX","EX",86397);