集合中的redis值对

时间:2014-01-02 14:18:30

标签: c redis set

我知道redis不允许嵌套结构,但这就是我所做的:

将值对添加到字符串集合中: SADD myset%lu:%ld

然后用(在SMEMBERS myset之后)阅读它们:

sscanf(conn-> reply-> element [i] - > str,“%lu:%ld”,& myfirstvalue,& mysecondvalue);

这有效但我意识到将值保持为集合中的字符串会占用太多内存。

有没有更好的方法将这个无符号长长对长存储在一个集合中?

1 个答案:

答案 0 :(得分:0)

保存为原始字节怎么样?无符号长长和长长都是64位,长度为8个字节。因此,使用16字节,您应该能够保存任何一对。将16bytes转换为unsigned char数组可以达到您的目的。

请注意,这会在添加值对之前“编码”之后引入一些性能损失,在检索它时需要“解码”。正如你使用保存的字符串这样做,我怀疑建议的解决方案会更慢,如果不是更快,实际上。