后端开发未读
Redis:(三)缓存设计缓存雪崩通常我们为了保证缓存中的数据与数据库中的数据一致性,会给 Redis 里的数据设置过期时间,当缓存数据过期后,用户访问的数据如果不在缓存里,业务系统需要重新生成缓存,因此就会访问数据库,并将数据更新到 Redis 里,这样后续请求都可以直接命中缓存。
那么,当大量缓存数据在同一时间过期(失效)时,如果此时有大量的用户请求,都无法在 Redis 中处理,于是全部请求都直接访问数据库,从而导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成整个系统崩溃,这就是缓存雪崩的问题。
对于缓存雪崩问题,我们可以采用两种方案解决。
将缓存失效时间随机打散: 我们可以在原有的失效时间基础上增加一个随机值(比如 到 分钟)这样每个缓存的过期时间都不重复了,也就降低了缓存集体失效的概率。
设置缓存不过期: 我们可以通过后台服务来更新缓存数据,从而避免因为缓存失效造成的缓存雪崩,也可以在一定程度上避免缓存并发问题。
缓存击穿我们的业务通常会有几个数据会被频繁地访问,比如秒杀活动,这类被频地访问的数据被称为热点数据。
如果缓存中的某个热点数据过期了,此时大量的请求 ...
Redis集群搭建一个高可用集群有以下内容:主从复制,哨兵模式,切片集群。
主从复制虽然使用 AOF 和 RDB 可以保证持久化,但是如果单点暴毙了,那么两个持久化文件也就没有意义了。
因此,可以通过集群的方式,避免单点暴毙的问题。通过一主多从的集群方式,保证服务的可使用。
主从复制是 Redis 高可用服务的最基础的保证,实现方案就是将从前的一台 Redis 服务器,同步数据到多台从 Redis 服务器上,即一主多从的模式,且主从服务器之间采用的是「读写分离」的方式。
主服务器可以进行读写操作,当发生写操作时自动将写操作同步给从服务器,而从服务器一般是只读,并接受主服务器同步过来写操作命令,然后执行这条命令。
也就是说,所有的数据修改只在主服务器上进行,然后将最新的数据同步给从服务器,这样就使得主从服务器的数据是一致的。
注意,主从服务器之间的命令复制是异步进行的。所以,无法实现强一致性保证(主从数据时时刻刻保持一致),数据不一致是难以避免的。
全量同步:第一次同步
在第一阶段中,如何判断从节点是不是第一次同步?
执行了 replicaof 命令后,图中的.阶段请求数据同步 ...
RedisRedis简介Redis 官方文档:
Redis 是一个开源(BSD 许可)的内存数据结构存储,用作数据库、缓存、消息代理和流引擎。Redis提供数据结构,例如字符串、散列、列表、集合、带范围查询的排序集合、位图、超日志、地理空间索引和流。Redis 内置了复制、Lua 脚本、LRU驱逐、事务和不同级别的磁盘持久性,并通过以下方式提供高可用性 Redis Sentinel 和 Redis Cluster 的自动分区。
使用 Redis 可以对这些类型运行原子操作,例如附加到字符串;增加哈希值;将元素推入列表;计算集交、并、差;或获取排序集中排名最高的成员。为了达到最佳性能,Redis 使用内存中的数据集。根据您的用例,Redis 可以通过定期将数据集转储到磁盘或将每个命令附加到基于磁盘的日志来持久化您的数据。如果您只需要一个功能丰富的网络内存缓存,您也可以禁用持久性。
Redis支持异步复制,具有快速非阻塞同步和自动重新连接以及网络拆分上的部分重新同步。
Redis还包括:
交易
发布;订阅
Lua脚本
生命周期有限的密钥
LRU驱逐密钥
自动故障转移
Redi ...