1.什么是Redis?作用?
Redis是一个基于内存的使用K-V结构存区数据的NoSQL非关系型数据库
Redis的数据存在内存中,读写速度非常快,每秒可以处理超过10万次读写操作,被广泛应用于缓存,经常做分布式锁
2.Redis的基本数据结构类型:
String Hash List Set Zset(有序集合)
3.在项目中为什么使用Redis?
提高查询效率;”保护“关系型数据库
4.Redis为什么这么快
基于内存存储实现;高效的数据结构;单线程,IO多路复用;虚拟内存机制
5.什么是缓存击穿、缓存穿透、缓存雪崩?
a. 击穿:大量热点访问时,热点数据在Redis中不存在或已过期,直接访问数据库,造成数据库访问压力短时激增造成故障
可能的场景:突发热门访问;一个key正被大量访问,这个key过期
解决:预先设置热门数据;实时调整过期时间、自动续期;使用锁、限流,缓存数据不存在时,先把数据存入redis
b. 穿透:Redis中没有数据,数据库中也没有数据,当大量访问时,数据库频繁查找数据,造成压力过大产生故障
可能的场景:访问的数据在redis中数据不存在;非正常数据访问;黑客攻击
解决:对不存在的数据缓存空值;设置白名单;布隆过滤器(更小的内存实现白名单,存在一定的误判)
c. 雪崩:大量key集中过期,数据库短时访问量激增
解决:多级缓存架构;自动续期、自动更新数据,即将过期的数据提前更新;对过期时间使用随机值,分散过期时间
6.Redis的持久化机制有哪些?优缺点?
Redis提供了RDB和AOF两种持久化机制
RDB(Redis Database):就是把内存数据以快照的形式保存到磁盘上
优点:适合大规模的数据恢复场景,如备份、全量复制等,恢复速度快
缺点:没办法做到实时持久化,会丢失一部分新数据
AOF(append only file):采用日志的形式来记录每个写操作,追加到文件中,重启时再充放AOF文件中的命令来恢复数据
优点:数据的一致性和完整性更高
缺点:恢复数据时效率低
7.Redis怎么实现分布式锁?
系统都是分布式部署的,日常开发中,秒杀下单、抢购商品等业务场景,为了防库存超卖,都需要用到分布式锁。
分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,保证一致性。
常见的分布式锁的实现一般有3种: 基于数据库实现的分布式锁、基于Redis实现的分布式锁、基于Zookeeper实现的分布式锁
使用Redis实现分布式锁就像在图书馆占座,加锁:在Redis中放一个数据占位;解锁:从Redis删除占位数据
8.Redis与数据库数据如何保持一致
延迟双删策略:删除缓存;修改数据库数据;延迟500到1000毫秒;再次删除缓存