我知道redis不允许嵌套结构,但这就是我所做的:
将值对添加到字符串集合中: SADD myset%lu:%ld
然后用(在SMEMBERS myset之后)阅读它们:
sscanf(conn-> reply-> element [i] - > str,“%lu:%ld”,& myfirstvalue,& mysecondvalue);
这有效但我意识到将值保持为集合中的字符串会占用太多内存。
有没有更好的方法将这个无符号长长对长存储在一个集合中?
答案 0 :(得分:0)
保存为原始字节怎么样?无符号长长和长长都是64位,长度为8个字节。因此,使用16字节,您应该能够保存任何一对。将16bytes转换为unsigned char数组可以达到您的目的。
请注意,这会在添加值对之前“编码”之后引入一些性能损失,在检索它时需要“解码”。正如你使用保存的字符串这样做,我怀疑建议的解决方案会更慢,如果不是更快,实际上。