• redis的优势和缺点要注意的


    redis优势也很容易看

    1、高并发

    同时大量并发请求进来,数据库是扛不住了,可能宕机或者连接池使用完,导致cpu性能性能下降。我们把一些热点数据存到redis中,并发请求进来直接取到值了,降低数据库压力,保证cpu性能。

    2、高性能

    用户第一次请求时候是到数据库磁盘查询数据的,磁盘查询很慢,如果查询后将数据放入redis中,下次查询直接redis拿到数据,redis是存在内存中,内存使用很快,这样就能大幅度提升响应速度,这就是性能的提升

    有好有坏,使用要注意的地方

    1、redis的key和value不要存太大,特别value,另外一片博客会讲这个坑。

    redis导致fullGc_yingyunzhizi的博客-CSDN博客

    2、key过期时间要分散,否则容易造成缓存击穿,缓存雪崩。

    3、过期策略要设定好,我记得redis4.0后可以支持优先保留访问量高的热点数据。、

    讲讲redis的几种问题

    1、缓存击穿:redis的key过期后不是自动删除的,会等下次查询时候发现没有了,再去后台DB查询了写入redis,那如果刚好到redis过期时间了,大量并发请求过来查询,你都会到后台DB查询,数据库可能扛不住

    解决:设置定时任务清除更新缓存快过期的,分布式锁机制

    分布式锁机制:根据redis单线程特性,过来的任务其实是在队列的,所以如果发现缓存过期了,你调用setNX获取锁*(要设过期时间),是否成功,成功了就获得锁去查询数据库,再更新到缓存中,然后释放锁;没有成功就回到队列继续请求redis。这种思路就是让一个线程去读取数据库刷新缓存,其它的等刷新后直接获取数据。

    2、缓存雪崩

    击穿是对同一个key的大量高并发请求,雪崩是热点大内存数据他们的过期时间一致,同时失效,请求过来都去数据库查询

    解决:设置不同过期时间,或者不变的热点数据永不过期(不推荐)

    3、缓存穿透

    穿透就是啥也没有得到,我们redis缓存的数据是空,但是查询后台DB也是空,就后台也没有数据,你接口是请求交通卡消息,但是查的数据是天气预报,那肯定没有。

    解决:参数合法性检查 /设置redis对象就是空对象

  • 相关阅读:
    灰度图处理方法
    mysql workbench使用schema视图导出表和列结构到excel
    Request和Response原理与详细运用
    【华为OD机试真题 JS】根据某条件聚类最少交换次数
    Pass-中间件管理
    npm打包整个过程
    初始化Library新姿势——App Startup
    【云原生】详解 Zookeeper + Kafka on K8S 环境部署
    【Java第十七期】:##模拟实现一个ArrayList
    实时云渲染应用之虚拟仿真项目的四大优势
  • 原文地址:https://blog.csdn.net/yingyunzhizi/article/details/125882726