一、Redis数据类型:
String:最大512M,内部采用了sds
Hash:哈希表,内部采用了ziplist或hashtable
List:链表,内部采用了ziplist或linkedlist
Set:集合,内部采用了intset或hashtable
ZSet:有序集合,内部采用了ziplist或skiplist
二、Redis持久化
RDB:全存,会 fork当前进程,采用写时复制技术避免耗时过高,把进程数据生成 RDB 文件;
AOF:把操作存到文件,类似于MySQL的binlog
三、Redis高可用方案
Master-Slave 只能用于读写分离,Master挂了就不能写入
Sentinel机制:Master挂了选一个Slave变成Master,会丢数据
TWemproxy:支持分片,不能自动迁移数据
Codis:支持自定义分片规则,能自动迁移数据
四、缓存穿透与雪崩
缓存穿透:查询不存在的Key,先去Redis查,查不到去数据库查
缓存雪崩:Key同时超时,大量查询都到数据库,导致数据库压力过大
五、redis为什么快?
存取可达10万次/秒级别
纯内存操作,避免了IO导致的挂起
单线程,避免了多线程的上下文切换问题
使用了IO多路复用(select,epoll,kqueue)