1. Redis-常用数据结构
Redis提供了一些数据结构供我们往Redis中存取数据,最常用的的有5种,字符串(String)、哈希(Hash)、列表(list)、集合(set)、有序集合(zset)。
redis常用五种数据类型的数据结构总结
Redis的5种基本数据结构
Redis常用命令手册
2. redis缓存雪崩、缓存穿透、缓存击穿
缓存穿透:
key 对应的数据在redis中并不存在,每次针对此key的请求从缓存获取不到,请求转发到数据库,访问量大了可能压垮数据库。比如用一个不存在的用户 id获取用户信息,redis缓存和数据库中都没有,若黑客利用此漏洞进行攻击可能压垮数据库(黑客访问肯定不存在的数据,造成服务器压力大)
缓存击穿:
key 对应的数据存在,但在 redis 中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端 DB 加载数据并回设到缓存,这个时候大量并发的请求可能会瞬间把后端 DB 压垮(redis某个热门数据过期,大量的合理数据请求到达数据库)
缓存雪崩
key 对应的数据存在,但在 redis 中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端 DB
加载数据并回设到缓存,这个时候大量并发的请求可能会瞬间把后端 DB 压垮
缓存雪崩针对很多 key 失效导致redis无法命中,数据库压力激增;缓存击穿则是某一个热门 key 失效导致redis无法命中,数据库压力激增
Redis 缓存穿透、缓存击穿、缓存雪崩
3.Redis数据淘汰策略
淘汰策略名称 | 策略含义 |
---|---|
noeviction | 默认策略,不淘汰数据;大部分写命令都将返回错误(DEL等少数除外) |
allkeys-lru | 从所有数据中根据 LRU 算法挑选数据淘汰 |
volatile-lru | 从设置了过期时间的数据中根据 LRU 算法挑选数据淘汰 |
allkeys-random | 从所有数据中随机挑选数据淘汰 |
volatile-random | 从设置了过期时间的数据中随机挑选数据淘汰 |
volatile-ttl | 从设置了过期时间的数据中,挑选越早过期的数据进行删除 |
allkeys-lfu | 从所有数据中根据 LFU 算法挑选数据淘汰(4.0及以上版本可用) |
volatile-lfu | 从设置了过期时间的数据中根据 LFU 算法挑选数据淘汰(4.0及以上版本可用) |
玩转Redis-8种数据淘汰策略及近似LRU、LFU原理
Redis实现分布式锁
4.Redis的持久化机制
Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置
Redis的持久化机制