redis面试题

1.redis支持的数据类型有哪些?

list队列、string字符串,set集合,zset有序集合,hash散列表

2.redis的持久化方式?

RBD:快照模式

每隔一段时间对内存中的数据进行快照存储,默认启用该模式

手动触发:使用save或bgsave 触发RDB  生成的文件是dump.rbd

save和bgsave的区别?

save执行后不会执行其他命令,知道该命令执行完

bgsave会单独分出一个线程去进行快拍,不会影响其他线程的操作。

自动触发:

需要修改配置文件

AOF:日志【每执行一个写操作】追加模式,默认redis没有开启,需要手动开启。默认文件名位appendonly.aop

RBD和AOF的区别?

RBD快照模式,数据备份和恢复速度快,缺点:数据完整性差,数据可能丢失过多。

AOF:日志追加,数据完整性高,缺点:数据备份和恢复速度慢。

3. redis如何保证缓存数据与数据库数据同步。

1.设置合理的过期时间。

2.对数据进行增删改时删除redis缓存数据。

4. redis的使用场景

1.热点数据缓存   --使用spring切面注解完成

2.显示任务的操作,比如短信验证码     ---调用阿里云接口实现

3.完成session共享的问题

4.完成分布式锁    ----使用setIfAbsent()上锁并设置过期时间,使用delete()去释放锁

5.商品的销售量。

5.什么是缓存穿透以及如何解决?

缓存穿透:查询的数据在数据库中不存在缓存中也不存在,这时候有人恶意访问这种数据,请求到达数据库。

解决方案:

第一步:在controller校验数据。对一些不合法的数据过滤。

第二步:使用布隆过滤器。

第三步:存放一个空对象,并设置过期时间不能超过5分钟。

6.什么是缓存击穿以及解决方案?

缓存击穿:数据库存在,但是缓存中该数据过期了。这时候有大量的请求访问过期的数据。压力顶到数据库。

解决方案:1.使用互斥锁 2.设置永不过期。

7.什么是缓存雪崩以及解决方案?

缓存雪崩:当缓存服务器重启或者大量缓存数据集中某一段时间失效,这样失效的时候,也会给后端系统(比如数据库)带来很大的压力。

解决方案:1.设置散列的过期时间。2.预热数据。3.搭建集群。

8. redis内存淘汰策略?

  [1]volatile-lru:从已设置过期时间的数据集(server. db[i]. expires)中挑
选最近最少使用的数据淘汰。
   [2]volatile-ttl:从已设置过期时间的数据集(server. db[i]. expires)中挑
选将要过期的数据淘汰。
   [3]volatile-random:从已设置过期时间的数据集(server. db[i]. expires)中
任意选择数据淘汰。
   [4]allkeys-lru:从数据集(server. db[i]. dict)中挑选最近最少使用的数据
淘汰。
   [5]allkeys-random:从数据集(server. db[i]. dict)中任意选择数据淘汰。
   [6]no-enviction(驱逐):禁止驱逐数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值