Redis——Redis用作缓存(内存回收/穿透/击穿/雪崩)

本文介绍了Redis作为缓存的使用,包括设置key有效期、内存回收策略(LRU、LFU)以及针对缓存穿透、缓存击穿和缓存雪崩的解决方案。建议采用布隆过滤器处理缓存穿透,使用加锁策略应对缓存击穿,以及设置均匀分布的过期时间以防止缓存雪崩。
摘要由CSDN通过智能技术生成

Redis 用作缓存

一、概念

Redis 既可以做缓存,又可以做数据库。那么 Redis 做缓存与数据库间的区别?

首先需要明白,在系统中使用缓存并不是为了秀技术,而是为了解决架构存在的问题

使用 Redis 作为缓存的目的:

  • 首先Redis 数据是存在于内存中的,内存速度快于磁盘千百倍,所以使用缓存一能够加快请求的响应速度
  • 再就是让大量的查询在到达缓存的时候,就能够得到数据,不用再去数据库中查询,减轻大量请求访问数据库的压力

Redis 做缓存的时候,由于内存空间有限,每个 Redis 实例中只分配部分内存空间,所以 Redis 缓存中存放的并不是全量的数据,而是经常被访问的热数据,热数据是随着用户的请求趋势而发生变化的。换言之,Redis 的数据并不像数据库那样重要,它是随着时间变化,冷数据应该被剔除,让出空间给热数据

在这里插入图片描述

那么 Redis 用作缓存的时候是如何保证淘汰冷数据,腾出空间给热数据呢?一般有如下两种方案:

1. 设置 key 有效期
2. 内存回收策略:LRU、LFU

在这里插入图片描述

二、设置 key 有效期

官网:http://redis.cn/commands/expire.html

使用:设置key的过期时间,超过时间后,将会自动删除该key

//设置 key1 的 value 的为 aaa,过期时间为 20 秒

set key1 aaa ex 20

我们知道在 servlet 中,再次操作会触发 cookie 重新计时,那么在 Redis 中设置 key 有效期之后,重新查询命中 key之后,key 是否会重新计时呢?

面试的时候,很多人都回答错了。查询其实

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值