首页  

redis面试题     所属分类 redis 浏览量 943
数据类型
string 二进制安全的字符串,最大512M
list  字符串列表
set  无序的字符串集合,不重复
sortedset   排序的字符串集合
hash    key/value对 


单进程单线程
利用队列技术将并发访问变为串行访问,消除了传统数据库并发控制的开销。
多线程处理 锁,线程切换 
单线程无法发挥多核CPU性能 , 可以单机多实例

Redis优点
速度快  内存操作
丰富的数据类型
支持事务
支持批量操作  pipeline
丰富的功能 缓存 消息 按key设置过期时间,过期后自动删除

Redis 相对memcached的优点
更丰富的数据类型
支持持久化
支持master/slave

过期时间和永久有效设置
EXPIRE PERSIST 


为何要把所有数据放内存
内存快 , 异步持久化
内存便宜


哈希槽
Redis集群有16384个哈希槽 
每个key通过CRC16校验后对16384取模来决定放置哪个槽
集群的每个节点负责一部分hash槽

pipeline的作用 
批处理 提升性能 降低网络流量 

Redis事务
原子操作 
单独的隔离操作 
事务中的所有命令都会按顺序执行

事务相关的命令
MULTI EXEC DISCARD WATCH

内存回收机制

过期策略 删除过期的key
淘汰策略 内存使用到达maxmemory上限时触发淘汰

三种过期策略

定时过期  每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除
惰性过期  访问key时,判断是否过期,过期则清除
定期过期  定期扫描 expires字典中一定数量的key,清除过期的key

Redis同时使用 惰性过期和定期过期 两种过期策略

数据淘汰策略
volatile-lru     从已设置过期的数据集中挑选最近最少使用的淘汰
volatile-ttl     从已设置过期的数据集中挑选将要过期的数据淘汰
volatile-random  从已设置过期的数据集中任意挑选数据淘汰
allkeys-lru      从数据集中挑选最近最少使用的数据淘汰
allkeys-random   从数据集中任意挑选数据淘汰
noenviction      禁止淘汰数据



持久化方式
RDB
AOF(append only file)


RDB文件小 适合全量复制 恢复速度快 对性能的影响相对较小
定期快照持久化 实时性不够  特定格式 兼容性差

AOF 支持秒级持久化、兼容性好,但是文件大,恢复速度慢,对性能影响大  
AOF文件重写 节省空间

持久化策略选择
数据量 数据安全要求 预算  主从策略
RDB AOF  或者 同时使用 


基于redis的分布式锁
setnx + expire

Redis 做异步队列
list rpush   lpop 消费消息  
lpop 没有消息时,要适当 sleep一下再试


集群方案
客户端分片  jedis 
代理分片  codis Twemproxy
Redis-cluster

redis集群方案


缓存穿透 雪崩 预热 缓存并发 

穿透优化   空值缓存   布隆过滤器

雪崩优化
缓存失效后 通过加锁或者队列来控制读数据库写缓存的线程数量
多级缓存  设置不同的过期时间

缓存并发  写入操作队列话 串行执行

有许多配置可以通过 CONFIG SET 修改,无需重启

上一篇     下一篇
zookeeper 与 dubbo

LongAdder和LongAccumulator

mysql面试题

cassandra架构要点

Elasticsearch知识点

kafka面试题