redis常见面试题

1.redis的数据结构以及应用场景?

string,list,set,hash,zset,hyper-log,geo,bitmap,布隆过滤器。

缓存,计数器,分布式会话,排行榜,最新列表,分布式锁,消息队列。

2.redis 6.0为什么一直不使用多线程?

  • redis 中cpu 不是瓶颈,收到内存和网络,
  • 提高redis,使用pipeline,每秒100万请求
  • 单线程内部维护比较低
  • 如果是多线程,线程切换和加锁\解锁,导致死锁
  • 惰性rehash

3.redis6.0以后为何使用多线程

对于小的公司,8w-10w的QPS,就够了,响应时间100ns

而对于大的公司对于qps和io的多线程(内部之执行命令还是单线程)

为什么不采用分布式架构,服务器数量多,维护成本高,redis命令不适用数据分区,数据分区无法无法解决热点读写的问题,数据倾斜,重新分配,扩容,缩容,更加复杂。

4.redis的高级功能和应用

慢查询,pipeline,watch,redis事务,lua脚本,redis rdb,aof,分布式锁(看门狗),红锁,redis主从,redis故障恢复,协议,redis淘汰算法。

5.为什么要使用redis

高性能,高并发

6.redis 和memcache有哪些优势?

7.缓存穿透,缓存击穿,缓存雪崩?

8.redis的逐出策略?

定期删除,惰性删除

淘汰策略

no-viction,volatile-lru,volatile-lfu,volatile-random,allkeys-lru,allkeys-lfu,allkeys-random

volatile-ttl

9.redis 数据库的双写一致性?

10.redis集群,redis 的通信协议,故障转移流程.

mset,mget无法在不同slot上操作

集群不支持redis事务

redis常见面试题_第1张图片

redis常见面试题_第2张图片

 

 

你可能感兴趣的:(redis,缓存,java)