不带值的Redis存储密钥

不带值的Redis存储密钥,redis,ttl,Redis,Ttl,当使用Redisexpire命令(如和)时,有些情况下根本不需要键来保存值,因为生存时间就是这样 但是,Redis要求任何键都有一个值 如果你不想阅读它,那么最合理的使用价值是什么呢?你自己对来自redis的所有东西都进行了序列化吗?如果是这样的话,你可以考虑使用一个前哨值(比如一个无常量等等),它被设置成“没有”之类的东西。 < P>我将存储一个字节的数据,这些数据也可以被广义地解释为“truthy”,比如ASCII字符 1 < /C> > P > >谁说你应该在ReISIS KEY中存储任何

当使用Redisexpire命令(如)时,有些情况下根本不需要键来保存值,因为生存时间就是这样

但是,Redis要求任何键都有一个值


如果你不想阅读它,那么最合理的使用价值是什么呢?

你自己对来自redis的所有东西都进行了序列化吗?如果是这样的话,你可以考虑使用一个前哨值(比如一个无常量等等),它被设置成“没有”之类的东西。

< P>我将存储一个字节的数据,这些数据也可以被广义地解释为“truthy”,比如ASCII字符<代码> 1 < /C> > P > >谁说你应该在ReISIS KEY中存储任何东西? 空字符串
对于redis键是完全有效的值,并且是最短的值:

> SET foo ""
OK
> GET foo
""
> BITCOUNT foo
(integer) 0
我会避免使用
。简单的
0
怎么样

127.0.0.1:6379> set akey 0
OK
127.0.0.1:6379> memory usage akey
(integer) 48
127.0.0.1:6379> set akey ""
OK
127.0.0.1:6379> memory usage akey
(integer) 50
127.0.0.1:6379>

在使用StackExchange Redis客户端时,可以通过查看RedisValue.IsNull为false但IsNullOrEmpty为true(多好的api!)来检测这一点。使用
内存使用率[key]
检查时,应该更清楚地知道这是键“foo”的值,而不是将键设置为“”,
0
值的占用空间小于空字符串。我认为这可能是一个更好的答案,就实际内存消耗而言。