redis也支持事务,但与MySQL等关系型数据库相比,redis的事务比较简单。
一、redis事务的特点
1、redis的事务是一组命令集合
可以把redis的事务看成一个命令的缓存,把一组要执行的命令添加到集合中,然后按顺序一起执行。
2、redis事务没有隔离级别
由于redis是单线程的,下一个命令必须在上一个命令完成后才会执行。因此不会有多个事务同时执行的情况,因此也就不需要定义隔离级别。
3、redis事务不保证原子性
redis的单条命令是保证原子性的,但是事务不保证原子性,即事务中某个命令的失败不会影响其它命令的执行和结果。
二、事务的实现步骤
1、开启事务
multi命令用于开启一个事务,此命令没有参数
2、添加命令
编写要执行的数据库操作命令
3、执行事务或取消事务
1)使用exec命令执行事务
示例
multi
set str1 '字符串1'
set str2 '字符串2'
exec
2)使用discard命令取消事务
multi
set str1 '字符串1'
set str2 '字符串2'
discard
三、事务监听
事务监听可以用于做为事务锁(乐观锁)使用,当另一个程序修改了某个key的值时,当前事务会被中断执行。
1、开启监听
在事务创建之前使用watch命令可以监听key的变化,当使用exec开始执行事务时,会检查被监听的key是否有变化,如果有变化,则中断事务的执行。
语法
watch key [key...]
2、取消监听
当事务已开始执行或是取消,则会自动取消监听,也可以使用unwatch命令手动结束监听。
示例
watch str1
multi
set str1 '字符串1'
unwatch //取消监听,后面必须还有语句,否则无效
set str2 '字符串2'
exec //因在执行前修改了str1的值,执行会被中断//在另一个命令行窗口执行以下命令,此命令需要在exec之前执行
set str1 '字符串11'
文章来源于哔站《Redis的事务管理》
更多学习视频和专栏文章请到哔站个人空间: 布道师学院的个人空间-布道师学院个人主页-哔哩哔哩视频
更多资源和项目下载请到:”开源吧(找实战项目和毕设项目的好网站)“ :开源吧