2021年8月16日

摘要: 缓存雪崩 缓存雪崩指的是缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间 内承受大量请求而崩掉。 解决办法 事前:尽量保证整个 Redis 集群的高可用性,发现机器宕机尽快补上,选择合适的内存淘汰策略。 事中:本地ehcache缓存 + hystrix限流&降级,避免My 阅读全文
posted @ 2021-08-16 20:40 超人不会灰啊 阅读(110) 评论(0) 推荐(0) 编辑
 
摘要: 一、缓存双淘汰法 1. 先淘汰缓存 2. 再写数据库 3. 往消息总线esb发送一个淘汰消息,发送立即返回。写请求的处理时间几乎没有增加,这个方法淘汰 了缓存两次。因此被称为“缓存双淘汰法“,而在消息总线下游,有一个异步淘汰缓存的消费者,在拿 到淘汰消息在1s后淘汰缓存,这样,即使在一秒内有脏数据入 阅读全文
posted @ 2021-08-16 17:05 超人不会灰啊 阅读(419) 评论(0) 推荐(0) 编辑
 
摘要: 这样的问题主要是在并发读写访问的时候,缓存和数据相互交叉执行。 一、单库情况下 同一时刻发生了并发读写请求,例如为A(写) B (读)2个请求 1. A请求发送一个写操作到服务端,第一步会淘汰cache,然后因为各种原因卡主了,不在执行后面业务 (例:大量的业务操作、调用其他服务处理消耗了1s)。 阅读全文
posted @ 2021-08-16 16:58 超人不会灰啊 阅读(308) 评论(0) 推荐(0) 编辑
 
摘要: 首先说一句,你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数 据一致性的问题,那么你如 何解决一致性问题? 一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶 尔有不一致的 情况,最好不要做这个方案,最好将读请求和写请求串行化,串 阅读全文
posted @ 2021-08-16 16:45 超人不会灰啊 阅读(76) 评论(0) 推荐(0) 编辑
 
摘要: 所谓 Redis 的并发竞争 Key 的问题也就是多个系统同时对一个 key 进行操作,但是最后执行的顺序和我 们期望的顺序不同,这样也就导致了结果的不同! 推荐一种方案:分布式锁(zookeeper 和 Redis 都可以实现分布式锁)。(如果不存在 Redis 的并发竞争 Key 问 题,不要使 阅读全文
posted @ 2021-08-16 16:37 超人不会灰啊 阅读(217) 评论(0) 推荐(0) 编辑
 
摘要: Redis Sentinel(哨兵)着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。 Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入下线状态时,自动从服务器中选举出新的主服务器。 Redis Cluster(集群)着眼于扩展性,在单个Redis 阅读全文
posted @ 2021-08-16 16:32 超人不会灰啊 阅读(89) 评论(0) 推荐(0) 编辑
 
摘要: AOF重写可以产生一个新的AOF文件,这个新的AOF文件和原有的AOF文件所保存的数据库状态一样, 但体积更小。 AOF重写是一个有歧义的名字,该功能是通过读取数据库中的键值对来实现的,程序无须对现有AOF文 件进行任伺读 入、分析或者写入操作。 在执行 BGREWRITEAOF 命令时,Redis 阅读全文
posted @ 2021-08-16 16:28 超人不会灰啊 阅读(139) 评论(0) 推荐(0) 编辑
 
摘要: Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。 很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据 (比如重启机 器、机器故障之后回复 阅读全文
posted @ 2021-08-16 16:25 超人不会灰啊 阅读(50) 评论(0) 推荐(0) 编辑
 
摘要: 并不能保证一定删除,Redsi有一个Redis 内存淘汰机制来确保数据一定会被删除。 首先介一下定期删除和惰性删除的工作流程: 1、定期删除,Redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,Redis不 是每个100ms将所有的key检查一次,而是随机抽取进行 阅读全文
posted @ 2021-08-16 15:53 超人不会灰啊 阅读(198) 评论(0) 推荐(0) 编辑
 
摘要: 1、Redis是一个单线程程序,也就说同一时刻它只能处理一个客户端请求; 2、Redis是通过IO多路复用(select,epoll,kqueue,依据不同的平台,采取不同的实现)来处理多个客 户端请求。 阅读全文
posted @ 2021-08-16 15:53 超人不会灰啊 阅读(332) 评论(0) 推荐(0) 编辑
 
摘要: Redis中有个设置时间过期的功能,即对存储在 Redis 数据库中的值可以设置一个过期时间。 作为一个缓存数据库, 这是非常实用的,比如一些 token 或者登录信息,尤其是短信验证码都是有时间 限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。 我们 set k 阅读全文
posted @ 2021-08-16 15:38 超人不会灰啊 阅读(950) 评论(0) 推荐(0) 编辑
 
摘要: 如果你打开看过 Redis 的源码就会发现Redis 内部使用文件事件处理器 file event handler,这个文件事件 处理器是单线程的,所以 Redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根 据 socket 上的事件来选择对应的事件处理器进行处理 阅读全文
posted @ 2021-08-16 15:33 超人不会灰啊 阅读(64) 评论(0) 推荐(0) 编辑
 
摘要: 主要是有三个原因: 1、Redis的全部操作都是纯内存的操作; 2、Redis采用单线程,有效避免了频繁的 上下文切换; 3,采用了非阻塞I/O多路复用机制。 阅读全文
posted @ 2021-08-16 15:18 超人不会灰啊 阅读(40) 评论(0) 推荐(0) 编辑
 
摘要: 其实就是名字上的意思,热数据就是访问次数较多的数据,冷数据就是访问很少或者从不访问的数据。 需要注意的是只有热点数据,缓存才有价值对于冷数据而言,大部分数据可能还没有再次访问到就已经被挤出内存,不仅占用内存,而且价值不大。 数据更新前至少读取两次,缓存才有意义。这个是最基本的策略,如果缓存还没有起作 阅读全文
posted @ 2021-08-16 15:15 超人不会灰啊 阅读(1008) 评论(0) 推荐(1) 编辑
 
摘要: 这主要是基于一种客观原因来考虑的。因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶 颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理 成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!) 阅读全文
posted @ 2021-08-16 15:15 超人不会灰啊 阅读(93) 评论(0) 推荐(0) 编辑
 
摘要: 1、Memcached所有的值均是简单字符串,Redis作为其替代者,支持更为丰富的数据类型 2、Redis 的速度比 Memcached 快很多 3、Redis可以做到持久化数据 阅读全文
posted @ 2021-08-16 15:13 超人不会灰啊 阅读(48) 评论(0) 推荐(0) 编辑
 
摘要: 1、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,没有持久化功能,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。 2、数据支持类型 Memcache对数据类型支持相对简单,只有String这一种类型 Redis有复杂的数据类型。Redis不仅仅支持简 阅读全文
posted @ 2021-08-16 15:12 超人不会灰啊 阅读(61) 评论(0) 推荐(0) 编辑
 
摘要: 1 、 访 问 速 度 快 , 因 为 数 据 存 在 内 存 中 , 类 似 于 Java 中 的 HashMap 或 者 C++ 中 的 哈 希 表 ( 如 unordered_map/unordered_set),这两者的优势就是查找和操作的时间复杂度都是O(1) 2、数据类型丰富,支持Str 阅读全文
posted @ 2021-08-16 15:05 超人不会灰啊 阅读(1131) 评论(0) 推荐(0) 编辑
 
摘要: 严格意义上来说缓存分为本地缓存和分布式缓存。 那以 C++ 语言为例,我们可以使用 STL 下自带的容器 map 来实现缓存,但只能实现本地缓存,它最主 要的特点是轻量以及快速,但是其生命周期随着程序的销毁而结束,并且在多实例的情况下,每个实例 都需要各自保存一份缓存,缓存不具有一致性。 使用 Re 阅读全文
posted @ 2021-08-16 14:55 超人不会灰啊 阅读(320) 评论(0) 推荐(0) 编辑
 
摘要: 主要是因为 Redis 具备高性能和高并发两种特性。 高性能:假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将 该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作 缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的 阅读全文
posted @ 2021-08-16 14:54 超人不会灰啊 阅读(369) 评论(0) 推荐(0) 编辑