Reputation: 7632
When using the Redis expire commands like SETEX
and TTL
, there are scenarios in which there is no need for the key to hold a value at all, because the time to live acts as such.
However, Redis requires any key to have a value.
What would be the most reasonable value to use - if you don't ever want to read it?
Upvotes: 52
Views: 40949
Reputation: 473
I would avoid using ""
. How about simple 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>
Upvotes: 24
Reputation: 51460
Who said that you should actually store anything in redis key?
Empty string ""
is a perfectly valid value for a redis key, and it's a shortest possible one:
> SET foo ""
OK
> GET foo
""
> BITCOUNT foo
(integer) 0
Upvotes: 67
Reputation: 2726
I would store one byte of data that could also be broadly interpreted as "truthy", such as the ASCII character 1
.
Upvotes: 10
Reputation: 2132
Do you serialize everything coming to and from redis, yourself? If so, you may consider using a sentinel value (like a NONE constant, etc.) which is set to something like 'None'.
Upvotes: 0