学习
实践
活动
专区
工具
TVP
写文章
专栏首页令仔很忙令仔学Redis(一)----浅析Redis存储数据时格式的设计

令仔学Redis(一)----浅析Redis存储数据时格式的设计

之前接触的一个业务,数据量的话现在在数据库中存了有将近400W的数据,在搜索的时候得到的这些数据会放入达到异步队列中,然后单独开一个线程来进行双写,写缓存,然后写数据库。Redis中的存储格式是Hash存储的,数据库的存储格式类似Hash,当时设计存储方式的时候是有些问题的,在Redis中存储的时候,数据库中有多少条数据,Redis中就会有多少个Key值。也就是说Redis中存储的一级Key有400W个,这样的存储格式会造成Redis的查询变慢,具体的原因下面解释。

具体原因

Redis的查询,都是根据Key值来操作的,Hash可以Key值或者根据Key和Field来确定一条记录。具体的操作可以去百度。其实可以把Redis的存储看成一棵树。Key是最顶端的存在。

数据量小的情况下,存储的话没有太大的要求。但是当数据量大的时候,就要细细的考虑下值的存储方式。正如我上边存储400W数据的方式,相当于把400W的数据都放到了一级Key上,就是没有任何的深度而言。

所有的Key都存储在了同一个层级上,这样的话,当查询的时候,就要遍历400W个Key值来找到你想要的数据。自己都感觉自己的设计是一坨翔。。。

优化设计

最好的办法,就是减少一级Key的数量。举个例子,花和树。假如全世界有花共100W种类,树也有100W,那怎么设计存储方式?

一级Key的设计要有自己的特点,这样删除的时候也很方便去删除。正如上图的设计一样,我要是查询一种具体的花,一级Key就可以过滤掉100W的数据,然后有可能知道具体的花的种类,再子节点查找的时候,每到一个子节点都可以过滤掉10倍的数据。这样才是最合适的。存的数据多,但是查询的时候也能够快速的定位到你想要的数据,何乐而不为呢?

转载请注明出处:http://blog.csdn.net/zlts000/article/details/56278531

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/zlts000复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 【Redis破障之路】一:强大的Redis

    和隔壁组的老哥聊天,老哥最近面了十几个候选人,他觉得合格的只有四五个。我问他主要问了什么?他重点提到了Redis。

    三分恶
  • 大数据技术周报第 006 期

    栗子:hdfs getconf -confKey fs.defaultFS 查看 hdfs 的 uri 地址。

    大数据学习指南
  • 【redis学习】高级键管理

    为了更有效地在应用程序中使用 Redis ,我们需要理解 Redis 是如何存储键的,并了解用于操作 Redis 实例中键空间的命令。

    看、未来
  • 今日推荐:awesome-architecture

    但是这条路还是有很多人走,而且也留下了相应的封神之法,今天推荐的就是一个相当详细的架构师框架学习图。内容很充实,看目录的时候,滚动条滚了很多次!学习起来肯定也不...

    仇诺伊
  • Redis:我承载了上千万人的火影青春

    作者:李世顺,腾讯游戏天美J1工作室游戏后台高级工程师,先后参与过剑灵手游、火影忍者手游、写实赛车项目的研发与维护工作。 ---- 火影忍者手游已经上线4年...

    腾讯云数据库 TencentDB
  • 直播预告 | 听说来这又能学技术,还能领福利?

    在上次交流会的时候,嘉宾就为大家分享了Tendis的两种产品形态——存储版和混合存储版,分别对应了两种不同的需求,同时,嘉宾还为大家介绍了存储版的架构和特性,就...

    开发者社区直播小编
  • 毕业5年,我问遍了身边的大佬,总结了他们的学习方法

    很多次小伙伴问到学习方法,我也很想写这样的一篇文章来跟大家讨论下关于学习方法这件事情。

    全栈程序员站长
  • 【程序源代码】非常棒的java学习面试指南

    最近好多同学想学习java,我在网上找了找终于找到这个指南。这一个非常不错的java学习指南。内容包含的比较全面,知识点也比较完整。

    程序源代码
  • 直播预告 | 听说来这又能学技术,还能领福利?

    Tendis开发者线上交流会又来啦! 关于Tendis,还不了解的小伙伴可以戳→开源一周star上千,什么产品这么香? 在上次交流会的时候,嘉宾就为大家分享了...

    腾讯云数据库 TencentDB
  • 敖丙带你看Redis数据结构底层系列-SDS

    我:哦哦哦,还有HyperLogLog,bitMap,GeoHash,BloomFilter

    敖丙
  • 都说Redis好用?听腾讯课堂资深研发来介绍

    | 作者 马艺超,腾讯课堂开发工程师,主要负责腾讯课堂的后台相关业务开发。 ---- 在做业务的时候用到了一些redis的特性,发现它的持久化特性特别好用,这...

    腾讯云数据库 TencentDB
  • 2018最新淘宝面试出炉:分布式锁+集群+一致Hash算法+底层技术原理

    1.Java基础还是需要掌握牢固,重点会问HashMap等集合类,以及多线程、线程池等。

    欧阳愠斐
  • 几个大型网站的Feeds(Timeline)设计简单对比

    Facebook起源的NewsFeed,以及Twitter起源的Timeline,核心问题都是如何处理巨大的消息(活动,activity)分发。“推Push”和...

    芋道源码
  • 美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题

    转载请注明出处哈:http://carlosfu.iteye.com/blog/2254154

    二狗不要跑
  • 环式学习法

    环式学习法更加适合业务系统相关的技术人员,而不太适合中间件(数据库、缓存、消息队列和服务中心等)相关的的技术人员,因为中间件的技术更加专注于深度和宽度,和具体的...

    王小明_HIT
  • Docker实践之03-Dockerfile指令详解

    所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个nginx镜像的容器,再进行修改一样,基础镜像是必须指定的。而FROM就是指定基础...

    编程随笔
  • Java继承知识点

    https://note.youdao.com/share/?id=40e70c92e16edf90b6c50267c9e2ba87&type=notebook...

    chenchenchen
  • 收藏指数满格!腾讯云开发者社区沙龙online全年视频&PPT打包!

    回首2020,在各位小伙伴们的支持下,云+社区解锁了很多新的成就。其中,在疫情刚刚肆虐的那段时期,为了响应“停工不停产、停课不停学”的号召,我们以特殊时期的技术...

    腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券