redis入门到精通系列(六):redis的事务详解
(一)事务的概念
谈到数据库的高级应用,不可避免会谈到事务。熟悉mysql的朋友们对事务肯定不陌生,简单来讲事务就是控制一个数据库操作序列要么全部执行要么全部不执行。今天我们就来了解redis中的事务是如何执行和使用的。
(二)redis事务的操作
begin 开启事务
commit 提交事务
rollback 回滚操作
multi 开启事务 设定事务的开启位置,后续的所有指令均加入到该事务中
exec 执行事务 设定事务的结束位置,同时开始执行事务
discard 取消事务 取消该事务,放在multi和exec之间
(四)锁
加锁是实现数据库并发控制的一个非常重要的技术,redis中同样存在锁机制。
4.1 监视锁:
//加锁
watch key1 key2...
//解锁
unwatch
对key添加监视锁,在执行exec之前如果key发生了变化,就会终止事务执行:
4.2 分布式锁:
设置锁
setnx lock-key value
解锁
del lock-key
对一个key设置公共锁之后,除了设置锁的人之外,其他人只能在外面等待,只有当解锁之后,其他人才能同样再去加锁
4.3 死锁的解决方案
当加锁之后由于宕机的问题没法解锁时,其他人就只能一直等待了。为了解决这个方案,我们可以为锁设置时间限定,如果时间到了还没释放锁,就由系统删除这把锁:
expire lock-key second
pexpire lock-key milliseconds
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了