【发布时间】:2022-02-21 22:07:53
【问题描述】:
我有 Redis 系统,它利用不同前缀的键嵌套和键组合:
SET prefix-1:concrete-key-1 value-1
SET prefix-1:concrete-key-2 value-2
SET prefix-2:concrete-key-1 value-3
SET prefix-2:concrete-key-2 value-4
SET id-123 concrete-key-1
SET id-456 concrete-key-2
SET id-789 concrete-key-1
所以通过使用 id-xxx 和 <prefix> 我可以在 2 个命令中获得特定值
id-123 -> concrete-key-1
prefix-1 + concrete-key-1 -> value-1
为了减少 redis 调用和流量,我创建了小型 LUA 脚本来在 Redis 端执行 getter:
key = redis.call('GET', KEYS[1]);
return redis.call('GET', <prefix>..key);
问题是在这种情况下如何正确传递前缀?
根据 Redis,我应该明确地将键指定为 KEYS 参数:https://redis.io/topics/lua-api
我应该将它作为密钥传递吗?
key = redis.call('GET', KEYS[1]);
return redis.call('GET', KEYS[2]..key);
但是没有独立的<prefix>键,它们都是由<prefix>:<key>组成的。那么我应该将前缀作为参数传递吗?
key = redis.call('GET', KEYS[1]);
return redis.call('GET', ARGV[1]..key);
或者这样传递它是否有意义?还有其他方法如何使用脚本正确获取价值?
【问题讨论】: