Redis(五):Lua脚本

本文详细介绍了Redis如何支持Lua脚本,包括创建和修改Lua环境、执行脚本的流程、相关命令如eval、evalsha等,以及脚本复制和使用Lua脚本带来的好处,如减少网络开销和实现原子操作。
摘要由CSDN通过智能技术生成

Redis2.6版本开始支持Lua脚本,通过在服务器端嵌入Lua环境,客户端可以使用Lua脚本在服务器端原子的执行多个命令。
Redis服务器会单线程原子性执行Lua脚本,保证Lua脚本在处理的过程中不会被任意其它请求打断。

创建并修改Lua环境

为了在Redis服务器中执行Lua脚本,需要在Redis服务器内嵌一个Lua环境。因为Redis在任何时间最多只有一个脚本被放进Lua环境中执行,所以一个Redis服务器只需要创建一个Lua环境。

  1. 调用lua_open函数创建一个基本的Lua环境;—— 接下来的步骤都是针对这个Lua环境操作
  2. 载入多个函数库到Lua环境;—— Lua脚本基于这些函数库进行数据操作
  3. 在LuaLua中创建一个redis表格全局变量table;—— 包含对Redis进行操作的函数
  4. 使用Redis自制的随机函数替换Lua原有的随机函数;
  5. 创建排序函数;—— 对Redis命令的结果进行排序,消除不确定性
  • 什么是不确定性?—— 集合是无序的,即使两个集合包含的元素完全相同,输出的结果也可能不同。
  • 不确定性的命令:sintersunionsdiff、smembershkeyshvalskeys
  • 如何消除不确定性:当Lua脚本执行完一个带有不确定的命令后,会调用table.sort函数对命令的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值