1. 执行脚本:
使用 EVAL 命令执行一段 Lua 脚本。
EVAL "return 'Hello, Redis!'" 0
第一个参数是 Lua 脚本,第二个参数是脚本中的键数量,后续的参数是脚本中用到的键和参数。
2. 执行脚本并使用键:
在 Lua 脚本中,可以使用 Redis 的键和参数。例如:
EVAL "return redis.call('get', KEYS[1])" 1 mykey
3. 执行脚本并使用参数:
在 Lua 脚本中,可以使用传递的参数。例如:
EVAL "return ARGV[1] + ARGV[2]" 0 5 10
4. 执行脚本并返回结果:
使用 EVAL 命令可以获取 Lua 脚本的返回结果。
EVAL "return redis.call('get', KEYS[1])" 1 mykey
5. 执行脚本并使用 SHA1 值:
使用 EVALSHA 命令执行 Lua 脚本,该命令使用 Lua 脚本的 SHA1 值而不是脚本本身。
EVALSHA sha1-value 1 mykey
6. 脚本缓存:
使用 SCRIPT LOAD 命令将 Lua 脚本加载到缓存中,并返回脚本的 SHA1 值。之后可以使用 EVALSHA 命令执行已缓存的脚本。
SCRIPT LOAD "return 'Hello, Redis!'"
EVALSHA sha1-value 0
7. 脚本示例:
以下是一个简单的 Lua 脚本,用于将指定键的值增加一个固定的偏移量:
-- Lua 脚本示例
local key = KEYS[1]
local offset = tonumber(ARGV[1])
local current_value = tonumber(redis.call('get', key) or "0")
redis.call('set', key, current_value + offset)
return current_value + offset
以上脚本使用 KEYS 获取键名,使用 ARGV 获取参数,并通过 redis.call 执行 Redis 命令。
8. 注意事项:
- Lua 脚本在 Redis 中是原子执行的,可以保证一系列操作的原子性。
- 使用 Lua 脚本可以减少网络开销,因为多个命令可以在单个网络请求中执行。
- 尽管 Lua 脚本是原子的,但在复杂的业务逻辑中使用时需要小心错误处理,因为 Redis 不支持脚本回滚。
这些是一些常用的 Redis 脚本相关命令。Lua 脚本为 Redis 提供了更灵活的操作,可以在单个命令中执行多个操作,适用于需要原子性和复杂逻辑的场景。
转载请注明出处:http://www.pingtaimeng.com/article/detail/9078/Redis