企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> # Redis实现方式 - SETNX key value - key 不存在的时候, 将key的值设置为 value - key 存在的时候, 不做任何修改 - EXPIRE key seconds - 设置key的生存时间 - DEL key [key...] - 删除key, 会返回成功的个数(不存在的key会被忽略) ## 分布式锁: SETNX , EXPIRE, DEL - SETNX 相当于全局锁, 设置key成功的拿到锁, 失败的等待锁的释放. - 为了防止拿到锁的一直没有释放释放锁(服务器宕机、程序挂了等等导致没有执行DEL操作), 需要通过EXPIRE给key设置一个过期时间 - 拿到锁的, 操作完成后, 通过DEL释放锁 > 两个问题 - 释放锁的时候检测值是否和写入的一样,因为设置了锁的自动过期时间,其它程序就可以拿到锁, 当前程序最后一步删除锁的时候,这时会误删 - SETNX , EXPIRE两个命令间又间隙, 在执行第二个命令钱如果发生了宕机或者一些特殊原因, 也会导致死锁. 这是可以使用lua脚本来保证 SETNX 和 EXPIRE原子性 . > # 相关阅读 - [高并发1-Redis分布式锁setnx,setex连用](https://www.cnblogs.com/jiawen010/articles/11350125.html)