##### 概念:
在默认情况下,用户请求数据时,会先在缓存(Redis)中查找,若没找到即缓存未命中,再在数据库中进行查找,数量少可能问题不大,可是一旦大量的请求数据(例如秒杀场景)缓存都没有命中的话,就会全部转移到数据库上,造成数据库极大的压力,就有可能导致数据库崩溃。网络安全中也有人恶意使用这种手段进行攻击被称为洪水攻击。
##### **解决方案:**
* 布隆过滤器
对所有可能查询的参数以Hash的形式存储,以便快速确定是否存在这个值,在控制层先进行拦截校验,校验不通过直接打回,减轻了存储系统的压力。
* 缓存空对象
一次请求若在缓存和数据库中都没找到,就在缓存中方一个空对象用于处理后续这个请求。
存在的问题 : 1、如果空值能够被缓存起来,这就意味着缓存需要更多的空间存储更多的键,因为这当中可能会有很多的空值的键。 2、即使对空值设置了过期时间,还是会存在 缓存层和存储层 的数据会有一段时间窗口的不一致的问题,对于需要保持一致性的业务会有影响。
- Redis 介绍
- 为什么要用Nosql
- Memcached(缓存)+Mysql+ 垂直拆分
- 分库分表+水平拆分+Mysql集群
- 什么是Nosql
- Nosql的特点
- 了解 3V+ 3高
- Redis 入门
- 概述
- Redis 能干啥
- 特性
- 常用网站
- 端口
- 查看redis是否启动
- Redis 基本操作
- Redis切换数据库
- 查看所有的key
- 清空当前数据库跟清除所有数据库
- 五大数据类型
- Redis Key
- 检测key值是否存在
- 移除key值
- 设置keyzhi10秒钟后消失
- 查看当前key的类型
- String(类型)
- 设置字符串
- 获取字符串
- 追加一个值到字符串
- 获取字符串长度
- 自增跟自减
- 字符串范围 range
- 替换指定开始的字符串
- 设置过期时间
- 设置多个字符串/获取多个字符串
- 检测值不存在在创建
- List(列表类型)
- 介绍
- 左边塞入一个值
- 获取值
- 左边塞入多个值
- 右边塞入一个值
- 移除左边或右边第一个值
- 通过下标获取值
- 获取长度
- 移除指定的值
- 截取固定的值
- 移除列表最后一个元素,将他移动新的列表中
- 检测列表是否存在
- 将列表中指定下标的值替换为另外一个值
- 往指定列表值前后插入数据
- 消息队列 跟栈
- SET(集合)操作
- 注意
- 添加一个或多个值
- 集合获取值
- 判断某一个值是否在集合中
- 获取集合中的个数
- 移除某一个元素
- 随机一个元素
- 随机删除一个元素
- 移动指定的值到另一个集合中
- 交集 并集 差集
- HASH(哈希)
- Hash介绍
- 设置一个或多个值
- 获取一个或多个值
- 获取所有的值
- 删除一个值
- hash获取长度
- 判断某个值是否存在
- 获取所有key 跟所有value
- 自增
- 如果不存在可以设置值 /如果存在不可以设置
- 总结
- ZSEt(有序集合)
- zset添加一个或多个值
- 查看值
- 显示全部的用户 从小到大
- 从大到下排列
- 显示全部的用户,并且携带成绩
- 显示工资小于2900员工升序排列
- 移除元素
- 获取个数
- 获取指定区间的成员数
- 五大类型介绍
- 三种特殊数据类型
- geospatial(地理位置)
- HyperLoglog
- Bitmaps
- 哨兵模式的全部配置
- 事务
- Redis事务本质
- Redis 的事务流程
- 放弃事务
- 错误
- 悲观锁 与乐观锁
- 解锁
- Redis配置文件详解
- Redis 持久化
- RDB
- AOF(Append Only File)
- 发布订阅
- Redis 主从复制
- 哨兵模式
- Redis缓存穿透(查不到
- Redis缓存击穿(查太多了)
- Redis缓存雪崩
- laravel 操作Redis
- 配置redis
- laravel 操作 String 类型
- laravel 操作 List (队列集合)
- laravel 操作 SET(集合)操作
- laravel 操作 ZSET(有序集合)
- laravel 操作 Hash(哈希)
- laravel 个人案例/其他业余配置