开发者社区> javaedge> 正文

Redis缓存设计原理及实战(下)

简介: 一个系统中的不同层之间的访问速度不一样,所以我们才需要缓存,这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度。
+关注继续查看

实战 - 将数据加入缓存

添加方式

全量添加

在某些特殊情况,比如初始化数据或缓存出现异常,没有将数据进行同步时,这时需要进行全量的数据同步。

全量同步方式有两种:

逐条插入

image.png

批量插入

image.png

即Pipeline 管道批量插入。通过pipeline指令完成。

Redis 是一种基于客户端-服务端模型以及请求 / 响应协议的 TCP 服务。

当请求进来后,都是经过服务器进行返回。若服务器没有响应及时,则其他请求进入等待。

这时服务器也无法处理新请求,如何解决这种现象?

答案就是管道:将多个命令发送到服务器,而不用等待响应,最后在一个步骤中读取该响应。MySQL 的批量插入就是这样。

适用场景

  • 缓存异常了,将数据重新全部刷入缓存
  • 为备战流量高峰期,提前将热点数据全部刷入

增量添加

比如平时有个商家入驻了:查询=》审核=》当后台系统审核新商家后,将数据写入 Redis,核心代码如下

image.png

后台修改饭馆信息时(审核通过后),要进行修改,关键代码:

image.png

当客户端的用户给饭馆投票时(喜欢 / 不喜欢餐厅),记得修改餐厅的 likeVotes 或 dislikeVotes 字段。

跟修改饭馆不一样的地方就是,只需要修改其中 likeVotes 和 dislikeVotes 属性,不需要整体进行修改

image.png

当用户查询餐厅时,若餐厅没有,会查询数据,然后再更新缓存:

image.png

先查询缓存 =》缓存没有 =》 查询数据库(再更新缓存)

1.png


参考

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
教你如何一步步分析Redis的架构设计
构造Redis 这种 KV DB,首要考虑: 数据模型 能存什么数据?如用户信息(用户ID、name、age、sex等),通常用 MySQL,在一个用户ID对应一个用户信息集合的场景下,就是KV DB的数据模型之一,也能满足这类存储需求。 操作接口 可以怎么操作数据?如计算多个用户的avg年龄,KV DB则无法胜任。因其只提供了简单的操作接口,并不支持复杂聚合计算。 所以,先搞懂数据模型和操作接口,才能物尽其用。
55 0
Redis缓存设计原理及实战(下)
一个系统中的不同层之间的访问速度不一样,所以我们才需要缓存,这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度。
45 0
Web缓存:通过Java实现更好的经济战略
  我读取 缓存的最好的比喻 来自Peter Chester,他在WordPress会议期间使用。他问观众,“3,485,250分为23,235”?最初的沉默之后,有些人把他们的计算器拿出来,最后有人大声喊道:“150.”切斯特先生又问了一个同样的问题,能够回应 这是缓存!   总而言之,这是一个非常简单的缓存情况,因为答案总是一样的。但隐喻是太棒了!实质上,缓存是关于经济。我们为等待响应的客户节省时间。我们节省资源,重新计算我们已经知道的答案。我们节省带宽。   我们该怎么做?通过保持一些响应“更接近”请求者并再次服务,而不必返回原始服务器并再次计算答案。
27 0
Spring注解缓存设计原理及实战
注解驱动的Spring Cache能够极大的减少我们编写常见缓存的代码量,通过少量的注释标签和配置文件,即可达到使代码具备缓存的能力,且具备很好的灵活性和扩展性。但是我们也应该看到,Spring Cache由于基于Spring AOP技术,尤其是动态的proxy技术,导致其不能很好的支持方法的内部调用或者非public方法的缓存设置,当然这些都是可以解决的问题。
36 0
OpenResty 高阶实战之————Redis授权登录使用短连接(5000)和长连接(500W) 使用连接池AB压力测试结果
一、短连接开始测试 ab -n 5000 -c 100 -k 127.0.0.1/test_redis_short #demo1 Concurrency Level: 100 Time taken for tests: 0.
1193 0
【七天玩转Redis实战营】答疑汇总Day3 Redis的运维实战
【第三讲,Redis的运维实战】 讲师:仲肥,阿里云NoSQL内核工程师;Redis Core Team member; 课程内容:Redis社区简介及运营方式介绍;云Redis的账号、监控、巡检、安全等性能介绍;审计,热点,大key等一般性解法;高级容灾。 答疑汇总:特感谢班委@邱谦 同学
407 0
[redis设计与实现][1]基本数据结构——sds
SDS(Simple Dynamic String):对C字符串的封装,可修改、可自动伸缩的字符串实现。Redis默认的字符串实现。 SDS定义:(sds.h) [cce lang=”c”] struct sdshdr { unsigned int len; unsigned int fr
1538 0
[redis设计与实现][7]基本数据结构——对象
Redis对基础数据类型进行了封装,构建出上层的对象系统,这个系统包含:字符串对象、列表对象、哈希对象、集合对象和有序集合对象。 Redis对象结构: [cce lang=”c”] typedef struct redisObject { //类型 unsigned type:4; //
1604 0
《Redis实战》一导读
Chris Testa是我在圣莫尼卡Google分部工作时认识的一个朋友,我从2010年3月开始和他一起在加利福尼亚州贝弗利山的一间小创业公司工作,Chris是公司的领头和主管,而我则受聘于他成为了公司研究部门的架构师。
1591 0
Redis缓存设计原理及实战(上)
一个系统中的不同层之间的访问速度不一样,所以我们才需要缓存,这样就可以把一些需要频繁访问的数据放在缓存中,以加快它们的访问速度。
62 0
+关注
javaedge
关注公众号:JavaEdge,后台回复面试,领取更多大厂求职资源。曾在百度、携程、华为等大厂搬砖,专注Java生态各种中间件原理、框架源码、微服务、中台等架构设计及落地实战,只生产硬核干货!
2303
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载