Redis常见问答笔记

1、Redis是什么

Redis本质上是一个Key-value类型的内存数据库。

2、Redis支持的数据类型

String、List、Set、Sorted Set、hashes

3、Redis数据淘汰策略
1. 删除到达过期时间的键对象
  • 定时删除:设置过期时间时创建定时器,过期时定时器同时执行删除
  • 惰性删除:过期并不删除,需要再次使用该key时判读是否过期,过期则删除
  • 定期删除:间隔一段时间定期删除过期的key
2. 当Redis所用内存达到maxmemory上限时会触发相应的溢出控制策略,Redis支持8种策略:
  • noeviction: Redis 的默认策略,不会删除任何数据,对所有写操作返回错误,但对读请求正常处理;
  • allkeys-lru:针对所有 key移除最近最久没有使用的(最后的使用时间)。
  • allkeys-lfu:针对所有 key移除最近最少使用的(使用频率)。
  • volatile-lru:对带过期时间的 key 移除最近最少使用的。如果没有可删除的键对象,回退到noeviction策略。
  • volatile-lfu:对带过期时间的 key 移除最近最久没有使用的。如果没有可删除的键对象,回退到noeviction策略。
  • allkeys-random:针对所有 key随机移除,直到腾出足够空间为止。
  • volatile-random:带过期时间的 key随机移除 ,直到腾出足够空间为止。
  • volatile-ttl:对带过期时间的 key 移除最早要过期的 key 。如果没有,回退到noeviction策略。
4、Redis常用场景
  • 会话缓存
  • 队列(list、set)
  • 排行榜/计数器(set、sorted set)
  • 发布/订阅
  • 分布式锁(setnx)
5、常用的Java客户端

Redisson、Jedis、lettuce等

6、持久化方式
  • AOF:每次执行命令后将命令本身记录下来,每次执行命令都会将命令写入到aof文件中,到达一定条件后会重写文件,将相同key命令只保留最后一条的操作,即简化命令记录,保留最新数据(默认关闭)
  • RDB:根据配置指定的策略定期将Redis中的内容全部写入磁盘,形成快照文件(默认开启)
  • 混合模式:Redis 4.0 之后新增了混合持久化的方式,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式化追加的文件的末尾
7、缓存击穿、穿透、雪崩
  • 缓存穿透:大量查询缓存和数据库都不存在的数据,造成缓存无效,全部积压查询数据库,给数据库造成巨大的查询压力,甚至击垮 db 系统。*
    常见解决方案:
    1. 将不存在的数据缓存短期时间过期的空对象,缓解数据库压力(如果有大量空值key访问会造成缓存空间的浪费,且如果某个key在缓存期间被赋予有值了,还可能会造数据不一致问题)
    2. 布隆过滤器(Bloom Filter)
  • 缓存击穿:某个大并发访问的热点key到期失效,瞬间造成大量访问瞬间涌入数据库,数据库压力大增,造成大量请求堵塞
    常见解决方案:
    1. 将key设置为永不过期(适用于不严格要求数据一致性)
    2. 互斥锁:在key过期时,如果已有请求访问数据库查询,其他请求则等待其请求完成并重新构建缓存后,从缓存中获取需要的数据
  • 缓存雪崩:和缓存击穿类似,区别在于缓存雪崩是多个key同时失效,造成的请求堵塞,引起雪崩。
    常见解决方案:
    1. 将key设置为永不过期(适用于不严格要求数据一致性)
    2. 互斥锁:在key过期时,如果已有请求访问数据库查询,其他请求则等待其请求完成并重新构建缓存后,从缓存中获取需要的数据
    3. 给不同key的过期时间加上随机数,尽量让过期时间平均分布,保证数据不会在同一时间大面积失效
    4. 主备缓存:主缓存作为常用缓存,key过期后从数据库重新加载数据,在主缓存key过期期间,获取锁失败时改用备用缓存,主缓存缓存更新后需要同步更新备用缓存
8、缓存预热

缓存预热是指在系统上线后,先将相关的数据缓存到缓存中,避免用户请求直接到数据库;

  • 小量数据可在系统启动时进行缓存加载
  • 可定时任务进行加载
  • 可在页面设置按钮点击加载或通过接口调用方式出发加载
  • 如有秒杀,抢购等活动时,可在活动开始前(如提前30分钟定时任务)加载缓存
9、缓存降级

缓存失效或缓存服务器挂掉的情况下,不去访问数据库,直接返回默认数据或访问服务的内存数据。
如redis失效时直接返回默认值或返回缓存到jvm中的部分热点数据

10、部署
  • 单机模式
  • 读写分离(主从):主从复制(master->slave)
  • 集群(哨兵)
    待续------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值