我知道redis不允许嵌套结构,但我要做的是:
将值对作为字符串添加到集合中:
添加myset%lu:%ld
然后用(在抹黑myset之后)阅读它们:
sscanf(conn->reply->element[i]>str,”%lu:%ld“,&myfirstvalue,&mysecondvalue);
这很有效,但我意识到将值作为字符串保存在一个集合中会占用太多内存。
有没有更好的方法将这个无符号的长-长-长-长对存储在一个集合中?
最佳答案
另存为原始字节如何?无符号的long long和long long都是64位,即8字节长。因此,对于16字节,您应该能够保存任何一对。将16字节转换为无符号字符数组可以满足您的需要。
注意,这会带来一些性能上的影响,因为在添加值对之前“编码”之后,在检索它时需要“解码”。当您使用保存的字符串执行此操作时,我怀疑建议的解决方案会更慢,甚至更快。
关于c - 集合中的redis值对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20884942/