• 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对象就是空对象

  • 相关阅读:
    onlyoffice的介绍搭建、集成过程。Windows、Linux
    CLIP:连接文本-图像
    全球AI人工智能领袖:Anthropic联合创始人丹妮拉·阿莫迪!
    BetterDisplay Pro v1.4.15(显示器管理管理软件)
    “基础不牢地动山摇“ ==> 重温 《内部类》
    JavaScript中的代理对象(proxy)
    Qt编程,文件操作、UDP通信
    Selenium启动常用浏览器
    一文了解 Go 接口
    【网络】网络扫盲篇 ——用简单语言和图解带你入门网络
  • 原文地址:https://blog.csdn.net/yingyunzhizi/article/details/125882726