redis的自增操作没有原生的设置过期时间,只能先自增然后通过expire设置过期时间,若出现特殊情况导致设置过期时间失败,则会导致业务错误。
下面是基于PHP和LUA脚本编写一个DEMO,使自增和过期时间成为原子操作,从而避免上述问题。
connect('127.0.0.1');
$lua = <<eval($lua,["test",10],2); // eval函数请查询官方说明文档
var_dump("RES:".$sequence);
$error = $redis->getLastError();
if($error){
var_dump($error);
}
var_dump("VAL:".$redis->get("test"));
var_dump("TTL:".$redis->ttl("test"));