Redis面试
2020-03-18 07:20
316 查看
1、什么是redis?
redis是一种面向内存的key-value数据库,储存string,list,set,z-set(有序set类型)的数据
2、mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
1、计算出20w数据所需要的内存大小,修改redis的配置文件,设置redis的最大可用内存 2、设置redis的内存淘汰策略为allkeys-lcu或者volatile-lcu
3、redis内存淘汰策略?
1、volatile-lru:在所有设置了过期时间的key中,最近一段时间最少使用的优先被淘汰 2、volatile-ttl:再所有设置了过期时间的key中,越接近过期时间的优先被淘汰 3、volatile-random:所有设置过期时间的key中,随机淘汰 4、allkeys-lru:最近一段时间内,最少使用的优先被淘汰 5、allkeys-random:随机淘汰 6、noeviction(禁止驱逐):超过最大可用内存就报错
4、redis过期处理策略?
redis是单线程的,redis收割是需要花费时间的,所以收割的次数过多会影响缓存效率,所以redis采用定期清理和惰性清理相结合的策略。 1、定期清理 redis中所有设置过期时间的key都储存再hash中,所以redis每秒只用扫描hash而不用扫描整个应用。主要分为 1、redis从设置过期时间的key中随机抽取一定数量的key, 2、将抽取的key中已经过期的数据进行清除 3、如果过期的key占比超过1/4,则重复第一步的操作 如果多个数据设置一样的过期时间,在某一时刻操作这些数据时,从缓存中查不到,就只能去操作数据库,此时缓存就不能起到作用,这就是缓存雪崩。 2、惰性清理 客户端访问redis时,如果操作的是过时的数据,就清理,否则就不清理。 当定情清理和惰性清理还是没能把数据清理干净时,此时就会用到内存淘汰策略
5、缓存穿透?
客户端访问的key不存在时,此时在缓存中差不到,就只能去数据库查找,当下一次又请求这个key时重复同样的操作。此时,缓存是没有起到作用的,数据库查找也比较耗时,这个就是缓存穿透。 处理: 1、服务端使用拦截器控制客户端请求,让不存在的key不访问数据库 2、当访问的key不存在时,可以将此key对应的值存入空对象放入到缓存中,给此key一个较短的过期时间
6、缓存失效策略?
1、FIFO:先进先失效 2、LRU:最近一段时间间隔内,最少使用的先失效 3、LFU:一直以来最少使用的优先使用,此时,每个key给一个hit属性,hit属性小的优先失效
7、缓存更新策略
Cache aside、Read Through、Write Through、Write Behind Cache Patten Cache aside:读:客户端首先读取缓存中的数据,不存在在读取数据库数据,客户端自己把数据库数据更新到缓存 写:客户端把数据写到数据库,然后再去更新缓存 Read through:客户端读取数据时,如果缓存没有,就读取数据库,同时缓存服务把数据更新到缓存。 Write through:客户端把数据写入缓存,缓存服务器同步的把数据更新到数据库 Write Bethind Cache Patten:客户端把数据写入缓存,缓存服务器异步的把数据更新到数据库
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 关于Redis的那些事——面试会问的问题
- Redis 面试面面观
- java架构之路-(Redis专题)redis面试助力满分+
- Redis面试灵魂36问,你怀疑人生吗?(含答案)
- 熟悉这几道 Redis 高频面试题,面试不用愁
- 面试问题redis rdb 和aof的区别
- 拼多多面试真题:如何用Redis统计独立用户访问量
- Java面试--Redis
- redis面试总结
- 漫画 | Redis常见面试问题(二)
- 后台开发面试准备 Redis
- 面试前必知Redis面试题—缓存雪崩+穿透+缓存与数据库双写一致问题
- 【面试】Redis的过期淘汰策略介绍一下?手写一下LRU?
- 面试中经常问到的Redis七种数据类型,你都真正了解吗?
- 【面试】吃透了这些Redis知识点,面试官一定觉得你很NB(干货 | 建议珍藏)
- 互联网公司面试必问的Redis题目
- 2017年6月Java面试——redis
- 漫画 | Redis常见面试问题(一)
- Redis面试常见问题
- Redis的面试基础知识详解