Redis --- Redis 分布式锁演示
小编在前面的文章演示过了 redis 的乐观锁,这次来演示一下 redis 的分布式锁,比较简单易懂。Let go。1,登录 redis,小编下面的指令均在 Docker 里面部署的 Redis 进行。如果各位的环境还没部署好,可以参考小编之前的文章:Ubuntu 部署 Docker 完整步骤 和 Docker 部署 Redis 完整步骤2,简单加锁,解锁#################
·
小编在前面的文章演示过了 redis 的乐观锁,这次来演示一下 redis 的分布式锁,比较简单易懂。Let go。
1,登录 redis,小编下面的指令均在 Docker 里面部署的 Redis 进行。如果各位的环境还没部署好,可以参考小编之前的文章:Ubuntu 部署 Docker 完整步骤 和 Docker 部署 Redis 完整步骤
2,简单加锁,解锁
################## 加锁 ##########################
127.0.0.1:6379> keys * ##查看所有key
(empty list or set)
127.0.0.1:6379> setnx k1 v1 ## setnx 命令加锁
(integer) 1
127.0.0.1:6379> setnx k1 v2 ## 上锁的 key无法再被操作
(integer) 0
127.0.0.1:6379> get k1
"v1"
################## 解锁 ###########################
127.0.0.1:6379> del k1 ## 把加锁的 key删除,即可解锁
(integer) 1
127.0.0.1:6379> get k1
(nil)
127.0.0.1:6379> setnx k1 v2
(integer) 1
127.0.0.1:6379> get k1
"v2"
3,设置过期时间
127.0.0.1:6379> setnx k1 v1
(integer) 1
127.0.0.1:6379> setnx k1 v2 ##上锁的 key无法再被操作
(integer) 0
127.0.0.1:6379> expire k1 20 ##设置过期时间为20s
(integer) 1
127.0.0.1:6379> ttl k1 ##剩余有效时间
(integer) 18
127.0.0.1:6379> setnx k1 v3 ##上锁的 key还有剩余时间无法被操作
(intege) 0
127.0.0.1:6379> ttl k1
(integer) -2
127.0.0.1:6379> setnx k1 v3 ##上锁的 key没有剩余时间,锁失效,可以被操作
(integer) 1
127.0.0.1:6379> get k1
"v3"
4,声明锁的同时,设置过期时间
127.0.0.1:6379> set k1 v1 nx ex 10 ## 设置k1值为v1, 加锁,过期时间为10s
OK
127.0.0.1:6379> setnx k1 v3 ##上锁的 key还有剩余时间无法被操作
(integer) 0
127.0.0.1:6379> ttl k1
(integer) 2
127.0.0.1:6379> setnx k1 v4
(integer) 1
127.0.0.1:6379> get k1
"v4"
更多推荐
已为社区贡献3条内容
所有评论(0)