使用 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操作熟悉的大神,给指点一下啊,谢谢!

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 9
TimJuly

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

Redis 里SET的用法是这样的

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

不是

SET key value expires

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

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

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

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

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

7年前 评论

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

7年前 评论

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

7年前 评论
TimJuly

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

Redis 里SET的用法是这样的

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

不是

SET key value expires

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

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

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

4年前 评论
TimJuly

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

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!