redis应用


redis应用

1.redis缓存预热

问题 当redis中大量吞吐时导致宕机

如何解决呢

前置工作

1 日常统计数据访问记录,翁吉访问频度比较高德热点数据,
2利用lru数据删除策略,构建数据留存对队列,
    storm和kafka配合

准备工作

将统计结果中的数据分类,根据级别,redis优先加载级别高德热点数据.

利分布式多服务器进行数据读取,提高加载过程.

2.redis缓存雪崩

问题 短时间大量请求导致数据库崩溃 ->导致redis崩溃

排查问题所在
短时间内较多key失效,导致大量请求访问数据库,数据库无法处理,崩溃.redis一方面无缓存可用,无法处理请求,资源被占用.
另一方面请求会越来越多导致崩溃.

短时间范围内大量key失效,是原因.

如何解决?

1. 页面静态化处理,数据静态化.
2. 构建多级架构,nginx+redis+ehcache
3. 对mysql优化
4. 灾难预警
5. 限流,牺牲客户端体验,让客户端发送假请求,一段时间后再恢复.

1.lru和lfu切换,防止同时大量数据失效.
2.数据有效期策略调整
    比如设置热点的数据,使用不同的有效期.
    过期时间可以加个随机值,防止同一时间大量失效.
3.超热数据使用
4.人工定期维护

3.redis缓存击穿

问题 数据库崩溃 redis却没有崩溃

排查问题所在 

单个key过期了,导致大量请求访问数据库,数据库崩溃.

如何解决?

1. 预先设定
2. 监控流量,设计长时间过期.
3. 定时刷新,启动定时任务高峰期来临前,刷新有效期,
4. 二级缓存

4.redis缓存穿透

问题 数据库崩溃 redis命中率变低

排查问题所在

redis中大面积未命中,出现不正常的url.

无效数据导致redis中没有,数据库中也没有.
这是外部不正常的现象,出现有人攻击服务器.

如何解决?

1. 缓存null
    如果查询结果为null,进行缓存,同时设定很短的过期时间
2. 白名单策略 布隆过滤器
3. 实时监控  
    检测redis命中率与null的数据对比.
    超过5倍以上纳入重点排查.  
4. key加密
    问题出现后,情动防灾业务.

5.redis性能检测

性能指标
    响应时间
    每秒请求数
    缓存命中率
内存指标
    已使用内存
    内存碎片
    由于内存限制被移除的key
    被阻塞的客户端
基本活动指标
    客户端连接数
    slave数量
    最近一次主从交互后的秒数
    key总数
错误指标
    客户端最大连接被拒绝的次数
    key查找失败的次数
    主从断开持续时间

性能监控工具类
性能监控指令

慢查询工具
slowlog
    get:获取
    len:长度
    reset:重制
可在配置文件配置慢日志的记录条数和多慢才记录进来.
slowlog-log-slower-than 100 #慢查询下限
slowlog-max-len 100 # 设置命令对应的日子显示长度

Author: 向天歌
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source 向天歌 !
  TOC