博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis可能出现的问题
阅读量:6373 次
发布时间:2019-06-23

本文共 672 字,大约阅读时间需要 2 分钟。

缓存穿透

一般出现这样的问题,是因为当我们查询一条肯定不存在的数据的时候,缓存中没有,就会透过缓存来查询数据库,数据库也不存在,这样就不会将值保存在缓存中,最后还是缓存和数据库中都没有,如果一直访问这条数据。我们就对数据库进行频繁的查询,给数据库带来压力;

解决方法:当查询的时候,如果缓存和数据库中都没有,我们就将这个数据以空的形式存放在缓存中,(或者是给一个false的标示)这样就不用去数据库就可以知道不存在,减少对数据库查询的次数,当我们这个值发生改变的时候,我们在重新进行赋值;

并发情况

当我们大量访问都是查询一个缓存中没有的数据时,这样就会都去数据库中进行查询,可能会造成数据库的宕机;

解决方法:在查询的时候,我给他添加了一个同步锁,只有第一条数据去数据库中查并且返回到redis中后才能查询,这是数据库中已近存在了值,这样也可以避免;

缓存雪崩 

大量数据的缓存时间失效,这样用户就会访问到数据库,第一台数据库崩溃了,访问就会到第二台数据库进行查询,这样会导致第二台的也崩溃;

解决方法:就是设置失效时间时,不要一起失效,或者是设置在访问量少的时候,或者设置为永远不失效;

缓存击穿

  是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。

  解决方法:对热门访问key早早的做好了准备,让缓存永不过期;

转载于:https://www.cnblogs.com/szwdun/p/10999098.html

你可能感兴趣的文章
IP子网划分
查看>>
海哥:再谈粉丝经济,你所知道的99%都是错误的。
查看>>
内涵图让你读懂社会
查看>>
awk学习笔记
查看>>
Spring 学习之bean的理解
查看>>
【不定期更新】游戏开发中的一些良好习惯与技术技巧
查看>>
DNS的初步了解
查看>>
多线程核对MD5码脚本
查看>>
LINUX 命令ifconfig 无效
查看>>
MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
查看>>
Oracle 11g安装过程中错误解决
查看>>
JavaScript强化教程——jQuery AJAX 实例
查看>>
Java中HashMap,LinkedHashMap,TreeMap的区别
查看>>
iPhone消息推送机制实现与探讨(转)
查看>>
iphone 线程 NSCondition NSThread
查看>>
Debian8添加kali源并安装metasploit
查看>>
Linux redhat 5.7 安装 Teamviewer7
查看>>
android EditText inputType说明
查看>>
交叉熵代价函数(作用及公式推导)
查看>>
这个用markdown编写
查看>>