String
优点:
- 直观
- 可以部分更新
缺点:
- List item
- 内存占用较大
- key较为分散
Hash
优点:
- 直观
- 节省空间,支持Hashtable和Ziplist,比String节约空间5倍
- 可以部分更新
缺点:
- 编程稍微复杂
- ttl不好控制,不能单独设置某个值的过期时间
Redis 选择hash还是string 存储数据?
具体使用哪种数据结构,其实是需要看你要存储的数据以及使用场景。
如果存储的都是比较结构化的数据,比如用户数据缓存,或者经常需要操作数据的一个或者几个,特别是如果一个数据中如果filed比较多,但是每次只需要使用其中的一个或者少数的几个,使用hash是一个好的选择,因为它提供了hget 和 hmget,而无需取出所有数据再在代码中处理。
反之,如果数据差异较大,操作时常常需要把所有数据都读取出来再处理,使用string 是一个好的选择。
当然,也可以听Redis 的,放心的使用hash 吧。
还有一种场景:如果一个hash中有大量的field(成千上万个),需要考虑是不是使用string来分开存储是不是更好的选择。