- 为什么要用redis?
- 高性能 从数据库读取是从硬盘上读取,操作缓存直接操作内存中读取,速度快
- 高并发 缓存的请求量是远远大于直接访问数据库的,这样用户的一部分请求不用经过数据库
- 为什么开发喜欢使用Hash结构存储?
hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象,后续操作可以直接修改这个对象中的某个字段值
- redis持久化机制 RDB和AOF
RDB是通过创建快照来获得内存里面的数据在某个时间点的备份。快照是默认的redis持久化方式
AOF 持久化方式,让redis每秒同步一次AOF文件,redis性能几乎没收到任何影响,用户的数据最多丢失1秒内的数据。
- 什么是redis雪崩?怎么解决
缓存同一时间大面积失效,后续请求全都转移到数据库上,数据库承受不住崩掉
尽量保证整个集群的高可用,发现问题 立马重启 补充上去
事前;本地使用ehcache缓存+hystrix限流&降级避免mysql崩掉
事后:采用AOFredis 的持久化机制保存数据,尽快恢复数据
- 什么是缓存穿透?
缓存穿透:请求缓存不存在的数据,请求落到数据库上去,导致数据库崩溃
解决方案:可以把这个结果仍然为空的数据,也缓存到redis 设置有效时间最长不超过5秒。 能减少缓存穿透
- redis与mysql数据库同步?
redis启动的时候去mysql读取所有的表放入redis中,往redis写数据的时候,对主键自增并进行读取,mysql更新失败,及时清除缓存及同步redis主键
- redis的内存淘汰策略
- noeviction 内存不足以容纳新写入的数据,写入操作报错
- allkeys-lru: 内存不足容纳新数据时,移除最少使用的key
- allkeys-random :当内存不足以容纳新写入数据时,随机移除某个
网友评论