$redis = new Redis();
$redis->connect('127.0.0.1', 6379, 1);
// Add a Sorted Set member that we want to expire
$redis->zAdd('key', 1, 'val1');
// Prepare our Lua script to expire the member added above
$script = "return redis.call('EXPIREMEMBER', KEYS[1], ARGV[1], ARGV[2])";
$sha = sha1($script);
// Assume script is already cached in Redis server, but load it if first attempt fails
$result = $redis->evalSha($sha, ['key', 'val1', 60]);
if ($result === false) {
$redis->script('load', $script);
$result = $redis->evalSha($sha, ['key', 'val1', 60]);
}
1条答案
按热度按时间2admgd591#
我找不到任何现成的PHP客户端库实现了KeyDB 'EXPIREMEMBER'函数,所以我最终使用Redis对Lua脚本的支持来解决这个问题。
注意,在Redis 7中,使用函数而不是临时脚本会更好,但是PHPRedis还没有提供这种支持(尽管PHPRedis已经添加了这种支持)。
有关使用脚本的详细信息,请访问:https://github.com/phpredis/phpredis#script和此处:https://redis.io/docs/manual/programmability/