1、 使用数据结构:string
2、 使用操作命令:Redis 字符串(String)
// 只有在 key 不存在时设置 key 的值。成功返回1,失败返回0
SETNX key value
// 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
SETEX key seconds value
// 获取指定 key 的值。
GET key
// 该命令用于在 key 存在时删除 key。成功返回1,失败返回0
DEL key
3、 实现原理
- 获取分布式锁
- 设置锁定时间(防止死锁)
- 业务逻辑
- 释放分布式锁
- 附加:防止程序异常结束
- 使用 SETNX key 当前时间+超时时间 命令获取分布式锁
当返回值为1时,表示当前程序已获取分布式锁,进行步骤2,否则可进行步骤5
- 获取到锁之后应立即使用 SETEX key 5 value 设置锁存在时间(以秒为单位),防止程序异常结束造成死锁
- 业务逻辑…
- 业务结束后使用 DEL key 释放分布式锁
- 附加:当步骤1返回值为0时,获取锁值进行判断:
使用GET key 获取上锁时间和超时时间
当锁定超时时,使用 DEL key 强制开锁
本文详细介绍了如何利用Redis的字符串操作实现分布式锁,包括SETNX、SETEX、GET和DEL命令的使用。在获取锁时,通过SETNX确保唯一性,然后用SETEX设置超时避免死锁。业务执行完毕后,使用DEL释放锁。同时,还提供了在锁超时情况下的处理策略,确保系统的稳定运行。
572

被折叠的 条评论
为什么被折叠?



