【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理

目录

说明

技巧

目录树

类型

string 字符串

hash 类似于map

list 集合 可重复

set 集合 不能重复  自动去重

zset 自动去重 有序集合 场景 排序 排名

使用场景

首页轮播图

缓存维护

消息队列(不推荐  建议直接使用MQ)

订阅

批量订阅

发布

问题

缓存击穿

说明

解决方法


说明

建议只使用redis的缓存

 

 

技巧

目录树

阿里:技术部:张三

阿里:人事部:李四

ali:it:zhangsan

ali:renshi:lisi

【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理_第1张图片

 

 

类型

string 字符串

hash 类似于map

list 集合 可重复

set 集合 不能重复  自动去重

zset 自动去重 有序集合 场景 排序 排名

 

 

用法

批量查询

循环查 不建议

【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理_第2张图片

 

通过redis的批量查询  推荐

【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理_第3张图片

通过管道形式批量查询    直走一个管道   可以理解为线程池  管道的类型更加丰富

【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理_第4张图片

 

 

使用场景

首页轮播图

【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理_第5张图片

缓存维护

 

消息队列(不推荐  建议直接使用MQ)

发布与订阅 类似于MQ

【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理_第6张图片

订阅

SUBSCRIBE 频道号1 频道号2 频道号3

 

批量订阅

可同时订阅 频道号1 频道号2 频道号3

PSUBSCRIBE 频道号* 

 

发布

PUBLISH {频道号1} {内容}

 

 

持久化

说明

自动备份数据 持久化到本地磁盘

分类

RDB

优势

保存某个时间点的快照 一个文件  好恢复

备份快照的时候 不会进行IO   保证快照数据的完整性

 

劣势

如果在备份的时候出问题  最后一次的备份会丢失   如果能接受的话  可以考虑使用RDB

无法实时备份

 

AOF

每次写操作  都会写入到AOF日志 便于备份

优势

保证 redis 数据完整性  

默认每秒写入一次日志(最坏的情况  也只是丢失一秒内的数据)

  还有 每次 写入操作  备份一次日志(可以保证数据完整性  效率低)

 

劣势

日志文件比RDB快照大  占内存

IO频繁

 

 

RDB&AOF

 

 

 

 

 

 

 

 

 

 

问题

缓存击穿 缓存穿透

说明

黑客 恶意频繁访问redis不存在的数据,导致数据库压力增大

 

查询的key在redis中不存在

对应的id在数据库也不存在

此时被非法用户进行攻击,大量的请求会直接打在db上

造成宕机,从而影响整个系统

这种现象称之为缓存穿透

 

 

解决方法

异步去读mysql   其他相同请求直接返回空 

同步等待  第一个请求已经去数据库查询   其他请求等待这一个查询就可以

 

把空的数据也缓存起来,比如空字符串,空对象,空数组或list

 

或者  使用布隆过滤器

布隆过滤器

https://blog.csdn.net/G971005287W/article/details/106837518

 

 

缓存雪崩

所有的缓存同时失效  导致所有请求直接请求到数据库  导致数据库宕机  

解决方案

错开过期时间 设置随机过期时间  不建议设置统一的过期时间

设置永不过期缓存

热点数据 过期之前 主动设置

多缓存结合

【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理_第7张图片

【NoSQL】Redis 知识点 使用场景 技巧 问题解决 批量查询 优化 整理_第8张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(架构心得,技,术,栈,redis,数据库)