redis的锁有哪几种
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这期内容当中小编将会给大家带来有关redis的锁有哪几种,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。redis加锁分类redis能用的的加锁命令分表是INCR、S
千家信息网最后更新 2025年11月10日redis的锁有哪几种
这期内容当中小编将会给大家带来有关redis的锁有哪几种,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
redis加锁分类
redis能用的的加锁命令分表是INCR、SETNX、SET
第一种锁命令INCR
这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。
然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说明这个锁正在被使用当中。
1、 客户端A请求服务器获取key的值为1表示获取了锁 2、 客户端B也去请求服务器获取key的值为2表示获取锁失败 3、 客户端A执行代码完成,删除锁 4、 客户端B在等待一段时间后在去请求的时候获取key的值为1表示获取锁成功 5、 客户端B执行代码完成,删除锁 $redis->incr($key); $redis->expire($key, $ttl); //设置生成时间为1秒
第二种锁SETNX
这种加锁的思路是,如果 key 不存在,将 key 设置为 value
如果 key 已存在,则 SETNX 不做任何动作
1、 客户端A请求服务器设置key的值,如果设置成功就表示加锁成功 2、 客户端B也去请求服务器设置key的值,如果返回失败,那么就代表加锁失败 3、 客户端A执行代码完成,删除锁 4、 客户端B在等待一段时间后在去请求设置key的值,设置成功 5、 客户端B执行代码完成,删除锁 $redis->setNX($key, $value); $redis->expire($key, $ttl);
第三种锁SET
上面两种方法都有一个问题,会发现,都需要设置 key 过期。那么为什么要设置key过期呢?如果请求执行因为某些原因意外退出了,导致创建了锁但是没有删除锁,那么这个锁将一直存在,以至于以后缓存再也得不到更新。于是乎我们需要给锁加一个过期时间以防不测。
但是借助 Expire 来设置就不是原子性操作了。所以还可以通过事务来确保原子性,但是还是有些问题,所以官方就引用了另外一个,使用 SET 命令本身已经从版本 2.6.12 开始包含了设置过期时间的功能。
1、 客户端A请求服务器设置key的值,如果设置成功就表示加锁成功 2、 客户端B也去请求服务器设置key的值,如果返回失败,那么就代表加锁失败 3、 客户端A执行代码完成,删除锁 4、 客户端B在等待一段时间后在去请求设置key的值,设置成功 5、 客户端B执行代码完成,删除锁 $redis->set($key, $value, array('nx', 'ex' => $ttl)); //ex表示秒上述就是小编为大家分享的redis的锁有哪几种了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
客户
客户端
成功
代码
时间
服务器
服务
命令
代表
内容
原子
思路
问题
加一
分析
意外
以防不测
专业
中小
事务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
硬盘当数据库
虚拟二层网络技术
国家人才交流中心数据库
网络安全日哪年
多选框怎么存数据库
徐州软件开发定制
服务器安装家用系统开机还是慢吗
网络安全工作责任制情况报告
禁毒软件开发
SQL语言创建数据库用户
监控服务器硬件配置
金蝶数据库实体位置
西奥蓝牙服务器
软件开发实例大全
网络安全课程考试答案
湖北网络安全周宣传活动
工程项目网络安全风险源有哪些
王者中语音服务器未连接怎么办
菏泽软件开发团队
计算机网络技术基本代码
宝塔服务器搭建挂机宝
西安网络安全最好的大学
云南游戏服务器地址云主机
杰出网络技术服务中心
端系统客户与服务器
关于网络安全的人物画
国内最厉害的网络安全研究室
云南软件开发有限公司
基于服务器的健身管理软件
网络安全普法教育活动