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事务