使用 predis 操作 Redis 数据库,怎样设置 Key 的生命周期(expires)?

redis的配置及连接都OK了,就是有些操作不知道怎么实现,比如生命周期,前缀设置等。

以前用redis扩展中的类来写,实现起来非常简单:

$this->redis->set($key,$val,$expires);

这样就可以生效了,但是转了Laravel后,使用了默认的predis:

Redis::set($key,$val,$expires);

这样写就会报错,只能这样写:

Redis::set($key,$val);

可是这样写的key是无限期的,可我需要加上生命周期

好闹心啊,到底该怎么操作,有没有对predis操作熟悉的大神,给指点一下啊,谢谢!

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 9
TimJuly

写程序最怕不看文档想当然.

Redis 里SET的用法是这样的

SET key value [EX seconds] [PX milliseconds] [NX|XX]

不是

SET key value expires

所以你的写法换成这样就对了

Redis::set('key', 'value', 'EX', 60);
3年前 评论
Cache::put($key, $value, $minutes);
3年前 评论

@ImPerat0R 试过了,没用。把你的Cache::换成Redis::也试了,还是报错。

3年前 评论
Redis::setex($key,$ttl,$value);

via https://redis.io/commands/setex

3年前 评论

@binafor 非常感谢!这个有效,解决了我的问题!

3年前 评论

@binaforRedis::expire($key,$time);也可以

3年前 评论
TimJuly

写程序最怕不看文档想当然.

Redis 里SET的用法是这样的

SET key value [EX seconds] [PX milliseconds] [NX|XX]

不是

SET key value expires

所以你的写法换成这样就对了

Redis::set('key', 'value', 'EX', 60);
3年前 评论

@TimJuly 如果要加NX的话,PX还要加吗?因为我看PX紧紧跟在EX后面

5个月前 评论
TimJuly

@kylesean 不用,方括号括起来的是可选参数

5个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!