MENU

Redis

September 21, 2019 • Read: 397 • Java

Reids基本数据类型应用场景

Redis 优缺点

  • Redis 优点

    • 速度快
    • 存储数据类型丰富
    • 丰富的特性
    • 持久化存储
    • 高可用
  • Reids 缺点

    • 使用内存存储数据
    • 重同步占用cpu(可以忽略)
    • 重启,硬盘文件加载进内存耗时高,过程中不能提供服务

Hash 结构优缺点

  • 优点

    • 同类数据归类整合存储,方便数据管理
    • 相比string操作占用资源小
    • 相比string节省空间
  • 缺点

    • 不能单独设置field过期
    • 集群规模下不适合大规模使用
Hash 应用场景
  • 电商购物车

    • 用户id为key
    • 商品id为field
    • 商品名称为value
  • 购物车操作

    • 添加商品hset cart:1001 10088 1
    • 增加数量hincrby cart:1001 10088 1
    • 商品总数hlen cart:1001
    • 删除商品hdel cart:1001 10088
    • 获取购物车所有商品hgetall cart:1001
List 应用场景
  • 实现常用数据结构

    • Stack = Lpush + Lp FILO 先进后出 同一个地方进出
    • Quene = Lpush + Rpop 左进右出
    • Blocking MQ (阻塞队列) Lpush + Brpop
  • 公众号消息流
set 应用场景
  • 商品筛选
  • 社交关注
zSet 应用场景

Redis 持久化

Redis 提供 RDB 和 AOF 两种数据的持久化存储方案,解决内存数据库最担心的万一 Redis 挂掉,数据会消失掉。

RDB快照(snapshot)

在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。 可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。

AOF(append-only file)

修改的每一条指令记录进文件appendonly.aof中,通过appendfsync配置fsync持久化到磁盘的频率

AOF重写

命令RDBAOF
启动优先级
体积
恢复速度
数据安全性容易丢数据根据策略决定
混合持久化

缓存穿透

请求不一定不存在的key,缓存空值设置过期时间

布隆过滤器解决

缓存雪崩

大批量缓存失效

缓存击穿