我们知道php-redis是php的一个扩展,方便了我们调用redis,但是它也有不足的地方,比如set方法
public function set( $key, $value, $timeout = 0 ) {}
对应redis的set指令
SET key value [EX seconds] [PX milliseconds] [NX|XX]
Redis >= 2.6.12 时增加了 EX,PX,NX,XX 很有用的参数,所以我们无法使用php-redis来实现这个指令,当key不存在的时候,设置key-value,同时设置过期时间,想要以原子化的方式来达到这样的效果,只能使用$redis->eval(lua脚本)
来达到,还好今天发现 $redis->rawCommand
()方法可以执行原生的redis指令。
使用三个点的语法来接收不定长的参数个数。
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$re = $redis->rawCommand('set', 'name_test_1', 'rxy', 'EX', 30, 'NX');
var_dump($re);