1. jedis 中 setnx key value 雖然可以處理同步問題 (setnx 有返回值 1是key不存在把它設置進去,0是key已經存在了)
但是 setnx設置完后 程序的下一步 有可能掛掉 那么 這個key就永遠留在redis中了,集群中的其它機器 永遠就進入不了要執行的邏輯,
然而即使 在它的下一步 加入過期時間又有可能會出現問題,因為如果走不到下一步呢?同樣會出現該問題(就會造成死鎖)
2. 通過 jedis.set(String key, String value, String nxxx, String expx, int time) 方法可以解決上面的問題。
redis 本身是單線程所以是線程安全的,但是不代表業務就是線程安全的,所以要是用redis 的分布式鎖
參考: https://www.cnblogs.com/JJJ1990/p/10496850.html
https://blog.csdn.net/KingCat666/article/details/77892176