php中Redis生存时间设置
封面图
•
2025-11-05
•
PHP
207
0
0
0
在 PHP 中使用 Redis 时,设置键的**生存时间(TTL, Time To Live)**是非常常见的操作。Redis 提供了多种方法来设置键的过期时间,下面是一些常用的设置方式: --- ## ✅ 1. 使用 `setex` 方法(设置键值并指定过期时间) ```php $redis = new Redis(); $redis->connect('127.0.0.1', 6379); // 设置 key 的值为 "value",并设置过期时间为 60 秒 $redis->setex("mykey", 60, "value"); ``` - `setex(key, expire, value)`:`expire` 是以秒为单位的生存时间。 --- ## ✅ 2. 使用 `psetex` 方法(毫秒级过期时间) ```php $redis->psetex("mykey", 60000, "value"); // 60000 毫秒 = 60 秒 ``` - `psetex(key, expire_ms, value)`:`expire_ms` 是以毫秒为单位的生存时间。 --- ## ✅ 3. 使用 `expire` 方法(先设置值,再设置过期时间) ```php $redis->set("mykey", "value"); $redis->expire("mykey", 60); // 设置过期时间为 60 秒 ``` - `expire(key, seconds)`:设置键的生存时间为 `seconds` 秒。 - 返回 `true` 表示成功,`false` 表示失败(比如键不存在)。 --- ## ✅ 4. 使用 `pexpire` 方法(毫秒级过期时间) ```php $redis->set("mykey", "value"); $redis->pexpire("mykey", 60000); // 60000 毫秒 = 60 秒 ``` - `pexpire(key, milliseconds)`:设置键的生存时间为毫秒。 --- ## ✅ 5. 查看剩余生存时间(TTL) ```php $ttl = $redis->ttl("mykey"); // 返回剩余秒数 echo "剩余存活时间: " . $ttl . " 秒"; ``` - 如果返回 `-1` 表示没有设置过期时间。 - 如果返回 `-2` 表示键不存在。 --- ## ✅ 6. 删除过期时间(取消 TTL) ```php $redis->persist("mykey"); // 取消键的过期时间 ``` --- ## 📌 注意事项 - 如果你使用的是 **Redis 6.0+**,还可以使用 `EXPIRE` 和 `PEXPIRE` 的变体,如 `EXPIREAT`、`PEXPIREAT` 来设置绝对时间。 - 在 PHP 中,`Redis` 扩展支持所有 Redis 命令,可以通过 `executeCommand()` 调用不支持的命令。 --- ## 示例总结 | 方法 | 参数类型 | 时间单位 | 是否同时设置值 | |--------------|---------------|----------|----------------| | `setex` | `string`, `int`, `string` | 秒 | 是 | | `psetex` | `string`, `int`, `string` | 毫秒 | 是 | | `set` + `expire` | `string`, `string`, `int` | 秒 | 否 | | `set` + `pexpire` | `string`, `string`, `int` | 毫秒 | 否 | --- 如果你有更具体的场景(例如使用 Redis 集群、连接池等),可以告诉我,我可以提供更详细的代码示例。
上一篇:
PHPStorm 常用的 License Server
下一篇:
php检查验证IP为有效IP
标题录入,一次不能超过6条
留言
评论