文章目录

东篱南山

采菊东篱下,悠然现南山

面试篇--分布式缓存

缓存
1.Redis的数据结构都有哪些。
String hash list set soreSet
2.如何防止缓存穿透、雪崩和击穿。
缓存穿透:1.布隆过滤器(存在误杀) 2.存储空null,但存活时间很短5分钟
缓存雪崩:1.将失效过期时间随机性分布
缓存击穿:采用互斥锁或者分布式锁来处理
穿透和击穿的区别在于:穿透对于大量key,而击穿针对的是单key

3.缓存数据过期后的更新如何设计。
1.请求来的时候,先读缓存,保存一个空key,然后再去读数据库,如果数据库有,再写回到缓存上
4.如何做到缓存(比如redis)与DB里的数据一致性,你们项目中用到了什么缓存系统,如何设计的。
1.数据落库,如果数据需要缓存,再写回到redis上
2.请求来的时候,先读缓存,如果缓存没有,然后再去读数据库,如果数据库有,再写回到缓存上
但是需要注意的是,缓存的穿透和、雪崩、击穿等问题
5.Redis的使用要注意什么,内存设置
1.注意建表规范
2.存储数据,设计k-v时候注意可读性,避免大value等
内存设置:
1.通过info命令来查看
2.最好设置max memory 不要超过机器最大内存
7.当前redis集群有哪些玩法,各自优缺点,场景。
1.官方的cluser方案;
提出了槽(slot)的概念,16384个,对于Redis的键值对进行散列,分配到这些槽中的一个,然后用节点对应着每一个槽,官方推荐将节点配置成主从,假如主节点失效,通过选举算法会从salve中选出来一个,完全去中心化,配置比较简单,但是出来较晚,使用者不是很多
2.codis;

3.哨兵;

8.Redis的并发竞争问题如何解决,了解Redis事务的CAS操作吗。
key 并发写的问题,
1.可以使用乐观锁来处理
2.使用分布式锁来处理
9.Redis的选举算法和流程是怎样的。
Raft协议,通过心跳和选举算法实现哨兵, 主观失效和客观失效,
10.redis的持久化的机制,aof和rdb的区别。
RDB 就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;
通过bgSave命令触发,从主进程fork()一个子进程来,生成父进程内存中数据快照,然后再替换原文件, fork会阻塞父进程
优点:1.二进制文件,适合全量备份
2.执行速度比AOF要快
缺点:
1.新老版本的RDB文件不一定兼容
2.没法做到秒级
3.fork属于重量操作,不能轻易操作
AOF 持久化记录服务器执行的所有写操作命令
1.将写命令写道缓冲区
2.AOF缓冲区将根据相关策略向磁盘上同步
3.因为AOF文件会越变越大,需要定时对AOF文件重写,达到压缩的目的
11.redis的集群怎么同步的数据的。

12.知道哪些redis的优化操作。
1.让键名保持简短,可读性更强
2.对key最好都带上过期时间
3.避免超大容量key
13.Reids的主从复制机制原理。
分为两种复制:
从节点使用psync()来实现同步
1.全量同步
1.主服务器收到同步请求,执行bgsave命令,同时使用缓冲区暂存命令
2.bgsave完成后将rdb文件发送给从服务器,从服务器收到RDB文件后,将数据保存到磁盘,然后加载到内存中
3.然后主服务器再将缓冲区的命令发给从服务器,从服务器执行这些命令
2.部分同步 主要用于节点丢失,做数据补发
主从节点分别保存着一个数据偏移量,来验证数据的一致性
从节点把自身偏移量发给主节点,主节点根据偏移量把挤压缓冲区中数据发送给从节点
14.Redis的线程模型是什么。
多路复用IO
15.Redis的淘汰策略
volatile-lru: 只对设置了过期时间的key进行LRU(默认值)
allkeys-lru : 是从所有key里 删除 不经常使用的key

volatile-random:随机删除即将过期key
allkeys-random: 随机删除

 volatile-ttl : 删除即将过期的
 
 noeviction : 永不过期,返回错误

16.热点Key问题
1.使用互斥锁来实现,只允许一个线程构建缓存
2.key"永久"存储
3.对热点问题先一步业务分析,可以将数据分布到集群中
17.Redis 高效问题
1.绝大部分请求是纯粹的内存操作(非常快速)
2.采用单线程,避免了不必要的上下文切换和竞争条件
3.非阻塞IO
15.Memcache的原理,哪些数据适合放在缓存中。

16.redis和memcached 的内存管理的区别。
17.简述本地缓存和分布式缓存和优缺点。
本地缓存
优点:性能高,没有网络消耗
缺点:没有持久化机制,难保持数据一致性,存储数量小,受GC影响
分布式缓存:
优点:数据集中,易于维护数据一致性,中间件可以实现对内存的统一管理,便于水平扩容
缺点: 有网络以及序列化和反序列化消耗,一般以来中间件来处理

18.本地缓存在并发使用时的注意事项。

19.Ehcache原理 有几种
1 FIFO,先进先出
2 LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。
3 LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,


标题:面试篇--分布式缓存
作者:zc1249274251
地址:https://www.fanyueba.com/articles/2019/09/26/1569471036786.html