Redis 技术总结
一、Redis 数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
参考:数据类型
二、Redis 应用场景
1、缓存
2、分布式 锁
3、自增码
三、Redis 主从复制、集群、哨兵机制原理
四、分布式锁
五、分布式缓存、雪崩、击穿、穿透
6、redis缓存数据分页解决方案 ?
7、redis 数据持久化解决方案 及区别(RDB和AOF)?
1),RDB,AOF;主从同步也算持久化;
2),高版本:开启AOF,AOF是可以通过执行日志得到全部内存数据的方式,但是追求性能:
2.1,体积变大,重复无效指令 重写,后台用线程把内存的kv生成指令写个新的aof
2.2,4.x 新增更有性能模式:把重写方式换成直接RDB放到aof文件的头部,比2.1的方法快了,再追加日志
```
8、redis 分布式锁与 zk 的区别 ?
9 、redis 存大key 比较慢的 原因 ?
10、redis 的 value 的最大值及原理?
字符串的最大值是512M。
11、redis 操作的线程模型,单线程还是多线程?
12、reids 为什么操作那么快?及为什么内存型数据库比较快?
内存控制器在ich里,而ich在cpu里,内存被cpu直接控制,cpu的时钟很快,我们知道带宽是通道数和时钟频率频率的乘积;
而硬盘不被cpu管理哪怕是现在的nvme硬盘也一样,被pch管理,并且pch有单独的时钟其频率最高只有几十mhz远低于cpu,所以从线路上来说内存就该快于硬盘。
13、set、Zset的应用场景
Set 无序的集合;
Zset 有序的集合;
14、redis 存在线程安全问题吗?为什么?
15、redis 缓存如何回收的?
16、redis 如何进行缓存预热?
17、数据库与缓存不一致如何解决?
双删原则
18、持久化原理?有哪些持久化方案?
19、为啥用Setnx?
具有原子性(不存在的情况下完成创建)。
如果要做分布式锁,就要用set k v nx ex (不存在,过期时间,避免死锁)。
20、redis 也扛不住,万级流量打到DB上,改怎么处理?
21、redis 实现分布式锁的指令?
22、redis 中的三条指令是什么,第三条指令到达后执行失败了,怎么处理?
23、mongodb使用场景?
24、redis 内存满了之后,报啥错?
25、redis 线程模型的原理?