首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用StackExchange.Redis在Redis中存储一个空值吗?

我可以使用StackExchange.Redis在Redis中存储一个空值吗?
EN

Stack Overflow用户
提问于 2016-06-13 14:33:36
回答 2查看 10.9K关注 0票数 14

有没有任何方法可以使用StackExchange.Redis客户端来存储Redis中的Null值?

如果您使用IDatabase.StringGet(key),那么返回的Null将用来表示“没有结果”。因此,如果您使用IDatabase.StringSet(key, null),那么结果就是您不知道是存在Null值还是No值!

是否有满足这一需求的机制?-也就是说,您希望缓存一个负数

我更希望避免任何讨厌的哨兵值(比如value ?? new byte[] {1}),如果某个值恰好匹配的话,这些值以后可能会引起问题!

我看了一下RedisValue.Null,但这只会产生一个Null,它有与上面相同的问题。

EN

回答 2

Stack Overflow用户

发布于 2017-03-08 19:07:24

这是通常的零进退两难的情况。我们也遇到过类似的情况,我们是如何处理这些情况的:

  1. 我们从后端系统中检索日期列表并将其存储在缓存中。如果没有检索日期,DAL类将返回null,并在发生与后端系统通信的错误/超时时抛出异常。为了缓存空值,我们用空list替换了null,这仍然表示没有可用的日期。
  2. 我们过去常常将用户首选项存储为后端的字符串。null值表示用户没有设置首选项。为了缓存这一点,我们缓存了在用例中永远不会出现的特殊字符串值--类似于NO PREFERENCE

HTH。

票数 3
EN

Stack Overflow用户

发布于 2020-02-07 15:03:45

我使用代理模式来减少对数据库的调用。我找到的唯一合理的方法是在Redis中存储一个空字节数组。

代码语言:javascript
复制
byte[] array = new byte[0];
IDatabase.StringSet(key, array)

在查询Redis时,可以使用value.IsNull检查字节数组是否为空。

这种方式似乎比存储0""或任何其他任意值更可取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37792487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档