首页 > 解决方案 > Redis 在 MULTI 中错误 EXPIRE

问题描述

使用 Redis,此脚本失败:

multi
sadd 1 1
expire 1 100
exec
smembers 1
...
(empty list or set)

它说集合是空的。我将过期时间设置为 100 秒,这对于在几分之一秒内运行的脚本来说已经绰绰有余了。如果我将过期时间设置为 200 秒,它会起作用:

multi
sadd 1 1
expire 1 200
exec
smembers 1
...
1) "1"

另一点:如果我删除 MULTI 它也可以:

sadd 1 1
expire 1 100
smembers 1
...
1) "1"

我在 Raspberry PI 上执行它。是时钟问题吗?我使用 Redis docker 6.0 版。

编辑:这看起来很可疑:

$ date
Mon Sep  6 18:41:13 CEST 2021
$ docker exec -it redis date
Thu May 21 19:18:40 CEST 2071

标签: dockerredisraspberry-pi

解决方案


它似乎与这个问题有关: 在 RasPi 上使用 redis:6-alpine 损坏日期

这是由于libseccomp我们的 Raspbian 中的旧版本...与新版本的 Redis 冲突。

使用稍旧版本的 redis 可以工作,例如 redis:6.0.6-alpine3.12。


推荐阅读