使用 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 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 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年前 评论

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