Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the purpose of colons within Redis keys

I'm learning how to use Redis for a project of mine. One thing I haven't got my head around is what exactly the colons are used for in the names of keys.

I have seen names of key such as these:

users:bob color:blue item:bag 

Does the colon separate keys into categories and make finding the keys faster? If so can you use multiple colons when naming keys to break them down into sub categories? Lastly do they have anything to do with defining different databases within the Redis server?

I have read through documentation and done numerous Google searches on the matter but oddly I can't find anything discussing this.

like image 908
Ryan Avatar asked Aug 24 '10 08:08

Ryan


People also ask

Which of the following are valid for Redis key names?

As for valid characters in Redis keys, the manual explains this completely: Redis keys are binary safe, this means that you can use any binary sequence as a key, from a string like "foo" to the content of a JPEG file. The empty string is also a valid key.

What are keys in Redis?

Redis Strings Redis Keys are Ideal for Keeping Track of Lots of Strings. For the (simple string) key-value data type Redis allows you to set, get, delete, and increment arbitrary string <key, value> pairs.

How Redis read all keys?

To list the keys in the Redis data store, use the KEYS command followed by a specific pattern. Redis will search the keys for all the keys matching the specified pattern. In our example, we can use an asterisk (*) to match all the keys in the data store to get all the keys.

Can Redis have multiple keys?

Redis quickly stretched this concept with data types, where a single key could refer to multiple (even millions of) pieces of data. As modules came to the ecosystem, the idea of a key was stretched even further because a single piece of data could now span multiple keys (for a RediSearch index, for example).


1 Answers

The colons have been in earlier redis versions as a concept for storing namespaced data. In early versions redis supported only strings, if you wanted to store the email and the age of 'bob' you had to store it all as a string, so colons were used:

SET user:bob:email [email protected] SET user:bob:age 31 

They had no special handling or performance characteristics in redis, the only purpose was namespacing the data to find it again. Nowadays you can use hashes to store most of the coloned keys:

 HSET user:bob email [email protected]  HSET user:bob age 31 

You don't have to name the hash "user:bob" we could name it "bob", but namespacing it with the user-prefix we instantly know which information this hash should/could have.

like image 57
Tobias P. Avatar answered Oct 11 '22 14:10

Tobias P.