目录
Redis
1、Redis可以用来做什么
2、Redis和传统关系型数据库有什么区别
Redis存储数据基于内存,传统关系型数据库存储数据到磁盘,Redis性能更优
Redis存储数据以key-value键值对,关系型数据库基于二维表,数据格式更为严谨
3、Redis常用数据类型
单线程,避免线程切换(线程切换和锁是”性能杀手“)
基于内存存储数据
采用IO多路复用机制,提高吞吐率
4、Redis是单线程的怎么理解
Redis是单线程的是指Redis在读写键值对时是单线程的
只有Redis持久化、异步删除等其实有Redis底层的其他线程执行
5、数据类型set和zset有什么区别
set:
- 存储无序,不可重复数据
zset:
- 存储有序,不可重复数据
- 有序:为每个元素添加一个分数来进行排序
相同:不仅能够对象集合中的元素增删改查,还能够对取交集等
6、Redis中list结构
存储有序可重复数据
7、缓存穿透、缓存击穿、缓存雪崩场景
缓存穿透:客户端请求不合法或者合法请求都不在缓存,造成频繁访问数据库
缓存击穿:热点key突然失效或者Redis重构复杂
缓存雪崩:缓存所有key全部失效或者Redis服务宕机
8、缓存穿透详解
解决方案:
- 给非法请求创建缓存,缓存的value值设置为“”(空)
-
9、缓存击穿详解
10、缓存雪崩详解
11、如何设计Redis的过期时间
正常情况下给数据key分别设置一个随机的过期时间,而对应一些热点数据的key一般不设置过期时间
如何实现Redis的高可用性
集群
哨兵
Redis为什么存这么快?断电即失数据怎么恢复
数据基于内存存储
Redis的持久化策略
12、Redis的过期策略
惰性删除:每次访问key,都需要判断key的过期时间
定期删除:Redis会将带有过期时间的key存放到一个字典中,以每秒10次的方式扫描字典(贪心算法)