Redis(远程字典服务:内存存储)

Redis(远程字典服务:内存存储)

问题:

  1. 数据库压力过大 数据库查询属于磁盘文件读写 redis属于内存c’c
  2. 数据不同步
  3. 传统锁失效
特点
  1. nosql数据库 没有sql语句数据库 非关系型数据库
  2. 内存存储
  3. 存储结构 key value
  4. 支持持久化(内存中数据能够进行文件存储 防止服务器断电数据丢失 用于数据内容的恢复)
  5. 支持集群 :高并发 高使用
redis五种数据类型
  1. string 字符串 及其 数值

​ 存储结构:字符串 “ ”

  1. list 有序可重复的列表格式 多个值

  2. hash 存对象 student s3=new student(“1003”,“张三”)

    存储结构:hset (对象名) (属性名) (值)(属性名) (值)

  3. set 无序唯一

  4. zset 有序 唯一

缓存预热

热点数据:访问频次高 数据量大的数据

Redis存放项目中的热点数据 例如:项目题库里的题

缓存预热:提前把热点数据存入到redis中

管理员:进行缓存预热 功能–是一个功能,也可以写定时任务

把热点数据存入redis中有两种方式 byte方式 和 json 方式

方式1:byte方式 把对象也就是集合转成byte

​ byte【】 bytekey=SerializtionUtils.serialize(对象)

​ byte【】 bytekey=SerializtionUtils.serialize(对象)

方式2:json方式 把集合转成json字符串String jsonStr=json.toJSONString(list)

添加依赖 springframework 添加字符串 添加操作字符串的方法

管道技术

频繁的向Redis写数据

管道技术提高效率

创建管道Pipeline pipeline=jedis.pipelined();

把管道积攒的命令一次性发送到Redis中 pipeline.syncAndReturnAll()

管理员进行缓存预热

Redis持久化

Redis中存放了很多不同的 如果Redis宕机了 因为是内存存储形式

数据就会丢失 重启需要重新缓存预热 为了防止这个现象

Redis支持持久化

就是将Redis内存中的数据存到本地文件中 当Redis重启 会把文件中的数据自动加载

到Redis内存中 无需进行缓存预热

两种方式

  1. RDB快照

    Redis调用系统fork()创建子线程 子线程会将数据存到RDB临时文件中 当

    子线程完成写入 RDB临时文件会替换掉所有RDB文件 并删除旧文件

    服务器宕机 丢失数据

  2. AOF

    每次执行命令 都会追加到aof文件末尾 如果数据丢失 只需要重新执行aof文件中的命令

集群技术
主从集群:生产环境不会使用

一主多从 读写分离 主负责写 从负责读 Redis会将主的数据同步到从中 主宕机 无法进行缓存预热

哨兵集群:

以主从集群为基础 每个服务器都有哨兵 哨兵会观察主服务器的运行情况 如果超过一半的哨兵发现

主服务器宕机 哨兵会发起投票 重新选择主服务器

缓存穿透

缓存命中:到Redis中获取数据 根据key就直接获取到数据了 就是缓存命中

缓存穿透:不让缓存命中 请求一个不存在的数据 redis中查不到 到数据库中查也查不到 大量这样的请求就会导致数据库瘫痪(大量请求redis中的key)

缓存穿透的解决方案:

  1. 布隆过滤:hash化 把redis中的key 存到集合中 请求Redis时判断 是否有这个key 如果没有 返回空(需要预热所有的key)
  2. 缓存空值 数据库中查不到 将key对应的值为null存到redis中(会查到大量空值)

Redis存放数据规则:

  1. 不经常变的 设置为永久
  2. 经常变的 根据变化速度 设置有效期长短
  3. 设置数据为易失 避免数据在同一时间过期
缓存雪崩

Redis宕机了 整个集群都宕机了

解决方案:

  1. 让集群更健壮
  2. 服务降级 Redis请求量达到一定量级后 返回空值
缓存并发

​ 并发量大 设置不同的过期时间

​ 使用集群

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隋zy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值