Redis实现分布式锁

栏目: 数据库 · 发布时间: 6年前

内容简介:问题:因为操作不是原子性的,如果在进行setnx的时候,刚好服务器宕机,没有来得及进行expire,那么该key将一直无法释放。直接使用redis的原子命令:
  1. 首先使用setnx命令,即当没有key存在的时候,才会创建value。

    • 当执行成功的时候会返回1

    • 当执行失败的时候会返回0

  2. 使用expire命令,指定key的过期时间

setnx key value
expire key second
复制代码
Redis实现分布式锁

问题:

因为操作不是原子性的,如果在进行setnx的时候,刚好服务器宕机,没有来得及进行expire,那么该key将一直无法释放。

方案2

直接使用 redis 的原子命令:

set key value [EX seconds] [PX milliseconds] [NX|XX]
复制代码
  • EX: key在多少秒之后过期
  • PX:key在多少毫秒之后过期
  • NX: 当key不存在的时候,才创建key,效果等同于setnx
  • XX:当key存在的时候,覆盖key
Redis实现分布式锁

问题:

当同一时刻有大量的key过期的时候,删除key是需要时间的,可能导致redis出现暂时的卡顿现象,要如何解决?

答:在设置key过期时间的时候加上一个随机值


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

慕课革命

慕课革命

汤敏 / 中信出版社 / 2015-1-1 / 39.00元

《慕课革命》,国内唯一一本关于全方面了解慕课的权威著作,全面阐述慕课理念与中国实践。 林毅夫、俞敏洪、徐小平、王强作序推。 大规模在线教育的慕课革命大幕已经拉开,这是一场基于互联网及移动互联网的教育大变革。根据网易教育联合有道发起的《2013中国在线教育新趋势调查报告》揭示,中国在线教育正呈现出六大趋势,包括互联网成为人们获取知识的最常见渠道;移动端学习方式已经开始成为人们接受的学习方......一起来看看 《慕课革命》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具