HSET user:1 username “someone”
HSET user:1 location “NY”
HSET user:1 bio “STRING WITH OVER 100 lines”
Keep in mind that if I use a hash, the value length isn’t predictable. They’re not all short such as the bio example above.
Which is more memory efficient? Using string keys and values, or using a hash?
该用户也是同样的疑问,因为值的长度是不确定的,所以不知道采用string还是hash存储更有效率。
这个问题底下有个开发者回答的非常好,这里翻译出来供大家一起学习讨论,如果有更好的方案,欢迎提出来 首先,答者建议参考redis官方的内存优化的文章:https://redis.io/topics/memory-optimization
,用来理解官方的开发者是内存优化方面基于什么考虑。
之后,答者列出了四个方案并给出了各个方案的利弊
1. 存储整个对象,其中JSON序列化过的字符串作为key
INCR id:users
SET user:{id} ‘{“name”:“Fred”,“age”:25}’
SADD users {id}
-
优势:可以认为是“最佳实践”,因为每个对象都是全特性的key,JSON解析特别块,尤其是一次性查询很多个字段的时候
-
劣势:如果只查询一个字段,速度就显得比较慢了
2.