【问题标题】:Redis - how to RPUSH/LPUSH an empty listRedis - 如何 RPUSH/LPUSH 一个空列表
【发布时间】:2016-11-12 07:58:07
【问题描述】:

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

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

以下选项不起作用:

1. rpush 键 --> 没有“参数数量错误”的列表值结果。
2. rpush key [] --> 添加一个 '[]' 项

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

有什么想法吗?

谢谢

【问题讨论】:

    标签: python caching redis push empty-list


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-05-12
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多