Redis 脚本
一、Redis 脚本 脚本定义
- Redis 脚本,使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
- Redis事务有一定的局限性。可以使用reids脚本代替redis队列。
二、Redis脚本优势
- 高效性:减少网络开销及时延,多次redis服务器网络请求的操作,使用LUA脚本可以用一个请求完成。
- 数据可靠性:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。
- 复用性:LUA脚本执行后会永久存储在Redis服务器端,其他客户端可以直接复用。
- 替代redis的事务功能 :redis自带的事务功能很鸡肋,报错不支持回滚,而redis的lua脚本几乎实现了常规的事务功能,支持报错回滚操作,官方推荐如果要使用redis的事务功能可以用redis lua替代
- 可嵌入性 :可嵌入JAVA,C#等多种编程语言,支持不同操作系统跨平台交互
三、使用Redis脚本注意事项
- 不要在Lua脚本中出现死循环和耗时的运算,否则redis会阻塞,将不接受其他的命令, 所以使用时要注意不能出现死循环、耗时的运算。
- redis是单进程、单线程执行脚本。管道不会阻塞redis。
四、演示脚本
- 脚本内容
if redis.call("EXISTS",KEYS[1]) == 1 then return redis.call("INCRBY",KEYS[1],ARGV[1]) else return redis.call("SET",KEYS[1],ARGV[1]) end
- 执行脚本
redis-cli --eval /you_path/script.lua jack , 2
参考
redis lua:官方文档:https://redis.io/commands/eval