Redis面经2

6.Redis缓存穿透和击穿

缓存穿透是指缓存和数据库都没有的数据,而用户(黑客)不断发起请求。举个例子:我们数据库的id都是从1自增的,如果发起id=-1的数据或者id特别大不存在的数据,这样的不断攻击导致数据库压力很大,严重会击垮数据库;

缓存击穿跟是指某个Key非常热点,在不停地扛着大量请求,大并发集中地对这个点进行访问,当这个Key在失效地瞬间,持续地大并发直接落到了数据库上,就在这个Key的点上击穿了缓存。而缓存雪崩则是因为大面积地缓存失效。

解决方法:

  1. 缓存集权可以在接口层增加校验,比如用户鉴权、参数校验、不合法地校验直接return,比如id做基础校验,id<=0直接拦截;

  2. “布隆过滤器(Bloom Filter)”能够很好地预防预防患侧穿透地发生,其利用高效地数据结构和算法快速判断处你这个Key是否在数据库中存在,不存在return就好了,存在就去查DB刷新KV再return;

  3. 缓存击穿的话,设置热点数据永不过期,再加上互斥锁就搞定了。

7.Redis有哪些数据结构

String:常规key / value缓存应用;常规计数:微博数,粉丝数等。 Hash:hash特别适合用于存储对象。用户信息,商品信息。 List:微博的关注列表,粉丝列表,消息列表。可以通过Irang命令,来实现分页查询。 Set:set 对外提供的功能与list类似是一个列表的功能,特殊之处在于 set 是可以自动排重的。 SortedSet:在直播系统中,实时排行信息包括直播间在线用户列表,各种礼物排行榜,消息弹幕等信息。适合使用Redis中的 sorted set结构进行存储。 HyperLogLog:是用来做基数统计的算法。优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身。概率计算 Geo:Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作 Pub/SubRedis:Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。

8.redis分布式锁

先拿到setnx(set if not exists)来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。

9.有大量的key需要设置同一时间过期,一般需要注意什么?

如果有大量的key过期时间设置的过于集中,到过期的那个时间点,redis可能会出现短暂的卡顿。严重的话会出现缓存雪崩,我们一般需要在一个时间上加上随机值,似的过期的时间分散一些。

10.是否使用过Redis集群,集群的高可用怎么保证,集群的原理是什么?

Redis Sentinal(哨兵) 着眼于高可用,在master宕机时会自动将slave提升为master,继续提供服务。Redis Cluster 着眼于扩展性,在单个redis内存不足时,使用Cluster进行分片存储。

11.Redis 的线程模型了解么?

Redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 Redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 Socket,根据 Socket 上的事件来选择对应的事件处理器进行处理。

文件事件处理器的结构包含 4 个部分:

  • 多个 Socket

  • IO 多路复用程序

  • 文件事件分派器

  • 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)

多个 Socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 Socket,会将 Socket 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。

12.缓存一直性怎么解决

删除缓存有两种方式:

先删除缓存,再更新数据库。解决方案是使用延迟双删。 先更新数据库,再删除缓存。解决方案是消息队列或者其他binlog同步,引入消息队列会带来更多的问题,并不推荐直接使用。

13.redis和memcached什么区别?为什么高并发下有时单线程的redis 比多线程的memcached效率要高?

区别:

  1. mc可缓存图片和视频。rd支持除k/v更多的数据结构;

  2. rd可以使用虚拟内存,rd可持久化和aof灾难恢复,rd通过主从支持数 据备份;3.rd可以做消息队列。

原因:mc多线程模型引入了缓存一致性和锁,加锁带来了性能损耗。

猜你喜欢

转载自blog.csdn.net/slave_of_life/article/details/130667767