Redis面试

Redis面试


存储类型:String,list,set,hash,zset

集群方案:codis,redis-cluster,业务层实现关联几个不同的redis实例

如何保证热点数据:数据淘汰策略

(redis中有6种淘汰策略:报错,随机删除,删除最少使用的键,在设置时间的键位中删除最少使用(最早过期,随机移除))

集群主从复制措施:异步复制

哈希槽:16384个

事物:MULTI,EXEC,DISCARD,WATCH


redis缓存雪崩

即大面积的数据同一时间内失效。

解决方案:

  • 1.失效时间设为随机
  • 2.使用互斥锁或者队列(如设置只允许单个key访问数据库,其他线程等待)
  • 3.使用双缓存。A,B两个redis服务器,B不过期,A过期时,访问B,同时启动异步线程,刷新A和B的缓存。

redis缓存穿透

即高并发请求redis缓存中没有的key,导致压力到数据库。

  • 1.使用互斥锁或者队列。得到锁才能请求数据库
  • 2.异步更新(无论是否有该Key,都将该key写到redis中,并设置时间,过期后用异步更新,需要做缓存预热)
  • 3.提供拦截机制,如IP拦截等,判断查询的合法性。

单线程redis的问题

单线程redis快的原因:

  • 1.纯内存操作
  • 2.单线程操作,无需切换进程上下文
  • 3.采用了非阻塞I/O多路复用机制(即一个快递员方法)

redis与分布式锁

利用redis的键判断幂等性

redis的分布式事物

用watch方法观察唯一key,在redis事物提交之前,判断是否有该key,无则提交。当然要考虑异常问题,所以在finally代码块中需要解锁。(在秒杀系统的高并发下也可以使用这种方法)
posted @ 2019-07-11 20:52  谈宜明  阅读(253)  评论(0编辑  收藏  举报