Skip to content

Redis整理

Redis概述

高性能键值对数据库,支持的键值数据类型

  • 字符串(String)
  • 列表(List)
  • 集合(Set)
  • 有序集合(Sorted Set)
  • 哈希/散列(Hash)

Redis的应用场景

  • 缓存
  • 任务队列
  • 应用排行榜
  • 网站访问统计
  • 数据过期处理
  • 分布式集群架构中的session分离

Redis的安装

  • 下载安装包
  • 解压安装包
  • 进入解压后的目录,执行make命令
  • 执行make install命令
  • 进入redis目录,执行src/redis-server命令启动redis服务
  • 执行src/redis-cli命令启动redis客户端

Redis的配置文件

  • daemonize yes:以守护进程方式运行

Redis的持久化

Redis 支持两种持久化方式:RDB 和 AOF。

  • RDB 持久化是将 Redis 在内存中的数据快照保存到磁盘上,可以在指定的时间间隔内生成数据快照。
  • AOF 持久化是将 Redis 在内存中的操作日志保存到磁盘上,可以在 Redis 重启时恢复数据。

Redis的事务

Redis 的事务是一组命令的集合,可以在一个事务中执行多个命令,保证这些命令要么全部执行,要么全部不执行。

  • Redis 的事务使用 MULTI、EXEC、DISCARD 和 WATCH 命令实现。
    • MULTI 命令用于开启一个事务。
    • EXEC 命令用于执行事务中的所有命令。
    • DISCARD 命令用于放弃事务中的所有命令。

缓存雪崩

缓存雪崩是指由于缓存服务器的宕机或者大量缓存数据同时过期,导致大量请求直接访问数据库,导致数据库压力过大,甚至宕机。

  • 解决方案
    • 使用高可用缓存服务器集群,避免单点故障。
    • 设置合理的缓存过期策略,避免大量缓存数据同时过期。
    • 使用预热缓存策略,提前加载缓存数据。
    • 使用限流策略,限制请求的速率,避免数据库压力过大。

缓存击穿

缓存击穿是指缓存中某个热点数据过期,导致大量请求直接访问数据库,导致数据库压力过大。

  • 解决方案
    • 设置合理的缓存过期策略,避免大量缓存数据同时过期。
    • 使用互斥锁,保证只有一个线程能够访问数据库,其他线程等待。
    • 使用布隆过滤器,判断请求的数据是否存在于缓存中,如果不存在则直接返回。

缓存穿透

缓存穿透是指大量请求访问缓存中不存在的数据,导致大量请求直接访问数据库,导致数据库压力过大。

  • 解决方案
    • 使用布隆过滤器,判断请求的数据是否存在于缓存中,如果不存在则直接返回。
    • 使用缓存空对象,将不存在的数据缓存起来,避免大量请求直接访问数据库。
最近更新