Redis 执行Lua脚本

Redis 执行Lua脚本

1. 简介

"Redis Lua是一种在Redis中使用的轻量级、高效的脚本语言,用于实现复杂操作和保证操作的原子性。

优点

  1. 大量减少Redis客户端Redis服务器的RTT时间。
  2. 降低Redis客户端Redis服务器的宽带压力,很多数据不需要传回Redis客户端直接在Redis服务端处理。

缺点

  1. 大量使用Lua脚本可能会增加复杂性。

2. 直接执行

py 复制代码
import redis

r = redis.Redis(host='localhost', port=6379, db=0)

# 准备数据
r.set("num1", 1, ex=3)
r.set("num2", 2, ex=3)

lua_script = """  
local key1 = KEYS[1]  
local key2 = KEYS[2]  
local value1 = redis.call('get', key1)  
local value2 = redis.call('get', key2)  
if value1 == false or value2 == false then  
    return 0  
end  
return tonumber(value1) + tonumber(value2)  
"""
# 执行
result = r.eval(lua_script, 2, 'num1', 'num2')
# 输出结果
print(result)  # 3

3. 提前注册

py 复制代码
import redis

r = redis.Redis(host='localhost', port=6379, db=0)

lua_script = """  
local key1 = KEYS[1]  
local key2 = KEYS[2]  
local value1 = redis.call('get', key1)  
local value2 = redis.call('get', key2)  
if value1 == false or value2 == false then  
    return 0  
end  
return tonumber(value1) + tonumber(value2)  
"""

# 注册脚本
script = r.register_script(lua_script)

# 准备数据
r.set("num1", 1, ex=3)
r.set("num2", 2, ex=3)

# 执行
result = script(keys=['num1', 'num2'])
print(result)  # 3

优点

  1. 节省每次脚本传输的带宽。
  2. 脚本一但注册会被服务器编译存在起来,省去每次编译的时间。
相关推荐
P7进阶路2 小时前
nginx 代理 redis
运维·redis·nginx
八股文领域大手子4 小时前
责任链模式+策略模式在项目中的实践
java·数据库·redis·sql·mysql
m0_748248237 小时前
centOS 环境 安装redis方法
linux·redis·centos
rockmelodies13 小时前
CentOS 最新系统安装 Redis 7.0.11 详细指南
linux·redis·centos
JLiuli16 小时前
Redis网络模型
数据库·redis·缓存
寻找沙漠的人21 小时前
Redis—01—分布式系统
数据库·redis·缓存
P7进阶路1 天前
Linux安装Redis以及Redis三种启动方式
linux·redis·bootstrap
杏花春雨江南1 天前
redis 支持哪几种数据结构
数据结构·数据库·redis
Navicat中国1 天前
通过数据库网格架构构建现代分布式数据系统
数据库·redis·分布式·mongodb·信息可视化·架构·navicat
杏花春雨江南1 天前
redis的淘汰策略
java·数据库·redis