user2694306
user2694306

Reputation: 4050

Redis Hash/Set Storing multiple types

I am new to redis so I apologize if this question seems naive. I want to create a hash of the following type:

item = {{"bititem":00001010000100...001010},
       {"property":1}}

Where bititem is a bit array created by setbit and property is a simple integer value. Is there any way to do this in redis or do I have to create different objects?

Upvotes: 1

Views: 1083

Answers (1)

Tw Bert
Tw Bert

Reputation: 3809

From your example, it is not clear to me why you need the extra depth-level around bititem.

Also, it is not clear to me what you want to do with it afterwards. So I give you three scenario's:

1. Serialized:

You can always serialize your data if it involves multiple levels. Most efficient is MsgPack, second best is JSON. You can deserialize the data in Lua-Redis when needed.

2. Hashed:

If you don't need multiple levels, simply do:

HSET item:01 bititem 00001010000100...001010
HSET item:01 property 1

Only do this though, if you really need to extract the different datamembers often. Separate members have quite some overhead. In general, I prefer to serialize the whole object (with a SET or a HSET).

3. Bitwise enabled:

If you want to make use of Redis' bitwise operations, you need to use simple strings (GET/SET). For example:

SET item:01:bititem "00001010000100...001010"
SET item:01:property 1

or even better:

SET item:01:bititem "00001010000100...001010"
SET item:01:properties [all-other-properties-serialized-as-msgpack]

Hope this helps, TW

Upvotes: 1

Related Questions