php$_redis=new Redis;$_redis-connectlocalhost6379;$_redis-auth0000;$_redis-select0;$_LUA= LUAlocal temp = redispcallgetKEYS1;if temp == nil then local shuzu = cjsondecodeARGV2; for q=1tonumberA
根据你的 Lua 脚本,如果传入的键名对应的列表不存在,它会将传入的数组作为新元素添加到列表中。所以,你需要确保传入的键名对应的列表存在。
你可以尝试使用以下代码:
<?php
$_redis = new Redis();
$_redis->connect("localhost", 6379);
$_redis->auth("0000");
$_redis->select(0);
$_LUA = <<< LUA
local temp = redis.pcall('get',KEYS[1]);
local shuzu = cjson.decode(ARGV[2]);
if (temp == nil) then
for q = 1, tonumber(ARGV[1]), 1 do
redis.pcall('lpush', KEYS[1], shuzu[q])
end
end
LUA;
$jsonarr = json_encode([10001, 10002, 10003, 10004, 10005, 10006], true);
$_eval_arr = ['jh_2', 6, $jsonarr];
$_redis->eval($_LUA, $_eval_arr, 1);
在这个版本的脚本中,我们首先检查传入的键名对应的列表是否存在,如果不存在,就创建一个新的列表并将传入的数组元素添加到列表中。这个调整应该解决你的问题。
原文地址: https://www.cveoy.top/t/topic/baZj 著作权归作者所有。请勿转载和采集!