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多路复用机制(即一个快递员方法)