《Redis开发与运维》笔记-事务与Lua

事务

Redis提供了简单的事务功能,将一组需要一起执行的命名放到multiexec两个命名之间。multi代表事务开始,exec代表事务结束,他们之间的命令都是原子顺序执行的。停止事务可以使用discard命令执行。

事务错误处理机制

命令错误

一般是操作命令语法错误,比如将set命令写错成sat,这种错误会造成整个事务无法执行。

运行时错误

一般是命令语法没有问题,而是在命令执行过程中出现报错,比如操作命令数据类型不支持等错误。
如果事务中有多条执行语句,执行语句成功的不会进行回滚操作。所以说明Redis事务不支持回滚操作。

watch命令
比如有一些应用场景,在事务执行之前,需要确保事务中的key没有被其他客户端修改过,就可以使用watch命令来进行监控,一旦事务中的key被其他客户端修改过,就会导致整个事务无法执行成功。

Lua

Lua语言

数据类型

Lua语言提供了几种数据类型:booleans,numbers,strings,tables
关键字 local(代表当前是局部定义)

Redis与Lua

在Redis中使用Lua

有两种方式可以执行lua脚本:eval和evalsha

eval 脚本内容 key个数 key列表 参数列表

如果Lua脚本较长,可以使用redis-cli --eval直接执行脚本文件

evalsha 脚本SHA1值 key个数 key列表 参数列表

执行evalsha命令,需要先将执行脚本加载到redis内存中的到SHA1值,可以使用 redis-cli script load命令加载脚本

Lua使用Redis API

Lua可以使用redis.call函数实现对redis的访问操作 如:

redis.call("set","lua","hello world")

Redis管理Lua脚本

script load 加载Lua脚本
script exists 判断SHA1值是否已存在
script flush 清除已经加载的所有Lua脚本
script kill 杀掉正在执行的Lua脚本 注意:如果当前脚本在执行写操作命令时,那么杀死命令不会生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Layne_lei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值