参考答案
结论:SETNX是独立命令仅做存在则设值,SET NX是SET命令的选项可原子附带过期等参数。区别:1.SETNX key value:key不存在时设值,返回1/0,无法同时设过期,需额外EXPIRE;2.SET key value NX EX seconds:原子设值与过期时间,避免非原子导致的死锁;3.分布式锁场景必须用SET NX EX保证锁超时释放。原理:旧版Redis中SETNX+EXPIRE分两步,若进程崩溃在中间则锁永久占用;新版本合并为原子指令。示例:SET lock:order 123 NX EX 30 替代 SETNX lock:order 123 加 EXPIRE。