面试中经常出现的redis问题~~~

**

redis!像不像你陌生又熟悉的前男友????

**

前言咳咳~redis讲解

总之一句话,用redis就是为了防止高并发访问量大的情况下,你的服务器gg了,就像是100w个账号抢周杰伦演唱会2w个票时,大麦崩了!!!钱都花不出去!啥也不是!!
出现这个问题的原因就是多人同时访问数据库,造成数据库的崩溃。这时候就出现了redis(不是黄牛的意思!!)。redis作为一个实现数据的缓存,主要作用就是在访问数据库之前,先看看redis中有没有,要是有就直接拿走,如果没有就再去数据库中查询(如果查到了,返回数据并且放在redis里),最直接的优点就是减少访问数据库的次数

问题就是面试官不问这个!!

面试可能会问到redis的问题!
1:缓存穿透、击穿:
一般出现这样的问题,是因为当我们查询一条肯定不存在的数据的时候,缓存中没有,就会透过缓存来查询数据库,数据库也不存在,这样就不会将值保存在缓存中,最后还是缓存和数据库中都没有,如果一直访问这条数据。我们就对数据库进行频繁的查询,给数据库带来压力;
解决方法:当查询的时候,如果缓存和数据库中都没有,我们就将这个数据以空的形式存放在缓存中,(或者是给一个false的标示)这样就不用去数据库就可以知道不存在,减少对数据库查询的次数,当我们这个值发生改变的时候,我们在重新进行赋值;
2:并发情况
当我们大量访问都是查询一个缓存中没有的数据时,这样就会全去数据库中进行查询,可能会造成数据库的宕机;
解决方法:在查询的时候,添加一个同步锁,只有第一条数据去数据库中查并且返回到redis中后才能查询,这是数据库中已近存在了值,这样也可以避免;
3:雪崩
大量数据的访问时间失效,这样用户就会访问到数据库,第一台数据库崩溃了,访问就会到第二台数据库进行查询,这样会导致第二台的也崩溃;
解决方法:就是设置失效时间时,不要一起失效,或者是设置在访问量少的时候,或者设置为永远不失效;

还有最重要的!!!!持久持久化!!

redis的一大特点就是可以将数据进行持久化,在一定程度上确保了数据的安全性,但不是绝对的
首先持久化分为rdb(快照持久化)和aof(精细持久化)

快照持久化,是默认开启的;会自动保存数据,当启动时会在文件夹中生成dump.rdb文件;存放持久化后的数据
当然我们也可以设置持久化的频率,在redis.conf文件中通过save进行设置,默认有三种情况,每秒超过一万数据或每5分钟有10条数据的时候再或者每15分钟有1条记录,都会执行快照持久化
当然也可以通过bgsave的方法来手动进行一个快照持久化;(也可以通过ip和端口号就给别人进行手动持久化)
如果频繁的快照持久化,会降低性能和效率,
但是这样也出现了一个问题,就是当一分钟内如果有一万条数据时,不会提交,但是在下一次提交之前,停电了,这样就会丢失掉这些数据;
解决方法呢就是和(AOF)精细持久化进行一个结合,达到一个秒级的持久化;
这个持久化需要我们手动进行开启,(注意,AOF开启之后,之前的数据都会丢失,所以要在一开始使用时就要配置好)开启的方法就是在配置redis.conf,将appendonly 改为yes;同时还可以更改文件名称;然后重新启动服务,这时精细化持久化就启动好了;
在快照持久化的同时,我们进行精细持久化
比如,我们每隔一个小时进行一次快照持久化,这中间我们添加精细持久化;当55分的时候宕机了,我们还是可以通过RDB和AOF来恢复我们的数据,尽可能减少了损失;等到一个小时以后我们进行了快照持久化,数据就会保存在rdb的文件中,我们就可以将aof的持久化文件重新开始;

结束

就这点东西 有问题再说吧!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值