Redis结合LUA的使用

本文介绍了Redis结合LUA的优势,如减少网络开销、实现原子操作和提高脚本复用性。详细阐述了EVAL和EVALSHA命令的使用,包括参数解释和执行机制,并提到了SCRIPT命令的相关功能,如缓存管理与脚本杀掉。
摘要由CSDN通过智能技术生成

前文:

redis事务的实现原理是把事务中的命令先放入队列中,当client提交了exec命令后,redis会把队列中的每一条命令按序执行一遍。如果在执行exec之前事务中断了,那么所有的命令都不会执行;如果执行了exec命令之后,那么所有的命令都会按序执行。但如果在事务执行期间redis被强制关闭,那么则需要使用redis-check-aof 工具对redis进行修复,删除那些部分执行的命令。Redis确保正一条script脚本执行期间,其它任何脚本或者命令都无法执行。正是由于这种原子性,script才可以替代MULTI/EXEC作为事务使用

 

一:Redis 中使用 LUA 的好处

1:减少网络开销,在 Lua 脚本中可以把多个命令放在同一个脚本中运行。

2:原子操作,Redis 会将整个脚本作为一个整体执行,中间不会被其他命令插入。换句话说,编写脚本的过程中无需担心会出现竞态条件。

3:复用性,客户端发送的脚本会永远存储在 Redis 中,这意味着其他客户端可以复用这一脚本来完成同样的逻辑。

 

二:Redis + LUA 整合使用

EVAL 命令为输入脚本定义一个 Lua 函数,然后通过执行这个函数来执行脚本。

EVALSHA 通过构建函数名,直接调用 Lua 中已定义的函数,从而执行相应的脚本。

 

EVAL 命令:EVAL script numkeys key [key ...] arg [arg ...]

(1)script 参数:是一段 Lua 脚本程序,它会被运行在 Redis 服务器上下文中,这段脚本不必ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值