Redis 有两种持久化机制:RDB和AOFredis
Redis 的持久化是能够禁用的,就是说你可让数据的生命周期只存在于服务器的运行时间里。两种方式的持久化是能够同时存在的,可是当 Redis 重启时,AOF 文件会被优先用于重建数据。数据库
RDB 持久化方式会在一个特定的间隔保存那个时间点的一个数据快照后端
AOF 持久化方式则会记录每个服务器收到的写操做。在服务启动时,这些记录的操做会逐条执行从而重建出原来的数据。写操做命令记录的格式跟 Redis 协议一致,以追加的方式进行保存缓存
Redis 内部使用一个 redisObject 对象来表示全部的 key 和 value。服务器
能够设置内存最大使用量,当内存使用量超出时,会施行数据淘汰策略。网络
Redis 具体有 6 种淘汰策略:并发
策略 | 描述 |
volatile-lru | 从已设置过时时间的数据集中挑选最近最少使用的数据淘汰 |
volatile-ttl | 从已设置过时时间的数据集中挑选将要过时的数据淘汰 |
volatile-random |
从已设置过时时间的数据集中任意选择数据淘汰 |
allkeys-lru | 从全部数据集中挑选最近最少使用的数据淘汰 |
allkeys-random | 从全部数据集中任意选择数据进行淘汰 |
noeviction | 禁止驱逐数据 |
由于 CPU 不是 Redis 的瓶颈。Redis 的瓶颈最有多是机器内存或者网络带宽。(以上主要来自官方 FAQ)既然单线程容易实现,并且 CPU 不会成为瓶颈,那就瓜熟蒂落地采用单线程的方案了。dom
在 Redis 中有五种数据类型异步
在大促或者某些特殊状况下,某些页面占用了一些稀缺服务资源,在紧急状况下能够对其整个降级,以达到丢卒保帅;高并发
好比商品详情页中的商家部分由于数据错误了,此时须要对其进行降级;
好比商品详情页上有推荐信息/配送至等异步加载的请求,若是这些信息响应慢或者后端服务有问题,能够进行降级;
好比渲染商品详情页时须要调用一些不过重要的服务:相关分类、热销榜等,而这些服务在异常状况下直接不获取,即降级便可;
好比多级缓存模式,若是后端服务有问题,能够降级为只读缓存,这种方式适用于对读一致性要求不高的场景;
好比秒杀抢购,咱们能够只进行Cache的更新,而后异步同步扣减库存到DB,保证最终一致性便可,此时能够将DB降级为Cache。
在大促活动时,能够将爬虫流量导向静态页或者返回空数据,从而保护后端稀缺资源。
自动降级是根据系统负载、资源使用状况、SLA等指标进行降级。
当访问的数据库/http服务/远程调用响应慢或者长时间响应慢,且该服务不是核心服务的话能够在超时后自动降级;若是是调用别人的远程服务,和对方定义一个服务响应最大时间,若是超时了则自动降级。