Redis - 如何将RPUSH / LPUSH列为空列表

时间:2016-07-10 05:17:28

标签: python caching redis push empty-list

我们想要RPUSH / LPUSH一个带有空列表的键 这是出于一致性原因:当使用LRANGE读取密钥而不是列表是否为空时,其余代码的行为相同。

为什么如果一个键有一个空列表它被删除的事实是一个问题?
因为我们使用Redis作为缓存,并希望区分这两种情况:
 1.尚未缓存具有相应值的特定键。在这种情况下,我们想要计算值(需要很长时间)并缓存它们。计算结果可能是一个空列表  2.已经缓存了一个带有空列表的密钥。在这种情况下,我们不想执行计算并返回空列表。

以下选项不起作用:

 1. rpush key - >没有列表值导致“参数数量错误”。
 2. rpush key [] - >添加'[]'项目

我们当前使用的(丑陋)解决方案是存储带有“EMPTY-ITEM”项目的单项目列表,并在我们读取列表时检查它。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:2)

Redis中不存在空列表 - 列表必须包含一个或多个项目。空列表(例如,弹出非空列表的结果)会自动删除。