有没有任何方法可以使用StackExchange.Redis客户端来存储Redis中的Null值?
如果您使用IDatabase.StringGet(key),那么返回的Null将用来表示“没有结果”。因此,如果您使用IDatabase.StringSet(key, null),那么结果就是您不知道是存在Null值还是No值!
是否有满足这一需求的机制?-也就是说,您希望缓存一个负数。
我更希望避免任何讨厌的哨兵值(比如value ?? new byte[] {1}),如果某个值恰好匹配的话,这些值以后可能会引起问题!
我看了一下RedisValue.Null,但这只会产生一个Null,它有与上面相同的问题。
发布于 2017-03-08 19:07:24
这是通常的零进退两难的情况。我们也遇到过类似的情况,我们是如何处理这些情况的:
null,并在发生与后端系统通信的错误/超时时抛出异常。为了缓存空值,我们用空list替换了null,这仍然表示没有可用的日期。null值表示用户没有设置首选项。为了缓存这一点,我们缓存了在用例中永远不会出现的特殊字符串值--类似于NO PREFERENCE。HTH。
发布于 2020-02-07 15:03:45
我使用代理模式来减少对数据库的调用。我找到的唯一合理的方法是在Redis中存储一个空字节数组。
byte[] array = new byte[0];
IDatabase.StringSet(key, array)在查询Redis时,可以使用value.IsNull检查字节数组是否为空。
这种方式似乎比存储0、""或任何其他任意值更可取。
https://stackoverflow.com/questions/37792487
复制相似问题