Redis 用作缓存
一、概念
Redis 既可以做缓存,又可以做数据库。那么 Redis 做缓存与数据库间的区别?
首先需要明白,在系统中使用缓存并不是为了秀技术,而是为了解决架构存在的问题
使用 Redis 作为缓存的目的:
- 首先Redis 数据是存在于内存中的,内存速度快于磁盘千百倍,所以使用缓存一能够加快请求的响应速度
- 再就是让大量的查询在到达缓存的时候,就能够得到数据,不用再去数据库中查询,减轻大量请求访问数据库的压力
Redis 做缓存的时候,由于内存空间有限,每个 Redis 实例中只分配部分内存空间,所以 Redis 缓存中存放的并不是全量的数据,而是经常被访问的热数据,热数据是随着用户的请求趋势而发生变化的。换言之,Redis 的数据并不像数据库那样重要,它是随着时间变化,冷数据应该被剔除,让出空间给热数据
那么 Redis 用作缓存的时候是如何保证淘汰冷数据,腾出空间给热数据呢?一般有如下两种方案:
1. 设置 key 有效期
2. 内存回收策略:LRU、LFU
二、设置 key 有效期
使用:设置key
的过期时间,超过时间后,将会自动删除该key
//设置 key1 的 value 的为 aaa,过期时间为 20 秒
set key1 aaa ex 20
我们知道在 servlet 中,再次操作会触发 cookie 重新计时,那么在 Redis 中设置 key 有效期之后,重新查询命中 key之后,key 是否会重新计时呢?
面试的时候,很多人都回答错了。查询其实不会触发 key 的有效期重新计时,不会延长时间
但是对已经有过期时间的key
执行EXP