RienNeVaPlu͢s
RienNeVaPlu͢s

Reputation: 7632

Redis store key without a value

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

Answers (4)

null
null

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

Leonid Beschastny
Leonid Beschastny

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

platforms
platforms

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

Greg M. Krsak
Greg M. Krsak

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

Related Questions