每天傍晚18:00一起成长!
在讲到使用hash还是存储的选择前,先了解Redis的hash和结构。
以下资料引自老钱的Redis深度历险。
和hash都是Redis的一种数据结构。结构常用来缓存用户信息,通常将用户信息结构体使用JSON序列化成字符串,然后将序列化后的字符串存入Redis进行缓存。
数据结构
Redis的字符串是动态字符串,可以修改string.h,内部结构类似于Java的string.h,采用预分配冗余空间的方式来减少内存的频繁分配。
如上图锁实,内部为当前字符串实际分配的空间,一般高于实际字符串长度len。使用的指令有set, get, mset, mget等
hash
Redis的hash相当于Java的,内部结构实现与一致,即数组+链表结构
hash数据结构
I want to store a JSON payload into redis. There's really 2 ways I can do this:
1. One using a simple string keys and values.
key:user, value:payload (the entire JSON blob which can be 100-200 KB)
SET user:1 payload
2. Using hashes
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?该用户也是同样的疑问,因为值的长度是不确定的,所以不知道采用还是hash存储更有效率。最新面试题整理好了,大家可以在Java面试库小程序在线刷题。
这个问题底下有个开发者回答的非常好,这里翻译出来供大家一起学习讨论,如果有更好的方案,欢迎提出来 首先,答者建议参考redis官方的内存优化的文章:,用来理解官方的开发者是内存优化方面基于什么考虑。
INCR id:users
SET user:{id} '{"name":"Fred","age":25}'
SADD users {id}INCR id:users
HMSET user:{id} name "Fred" age 25
SADD users {id}INCR id:users
HMSET users {id} '{"name":"Fred","age":25}'INCR id:users
SET user:{id}:name "Fred"
SET user:{id}:age 25
SADD users {id}。另外,Redis 系列面试题和答案全部整理好了,微信搜索Java技术栈,在后台发送:面试,可以在线阅读。
参考资料
《Redis深度历险》
原文链接:
版权声明:本文为CSDN博主「布鲁斯1990」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
限时特惠:本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情
站长微信:Jiucxh声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。