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 命令用于放弃事务中的所有命令。
缓存雪崩
缓存雪崩是指由于缓存服务器的宕机或者大量缓存数据同时过期,导致大量请求直接访问数据库,导致数据库压力过大,甚至宕机。
- 解决方案:
- 使用高可用缓存服务器集群,避免单点故障。
- 设置合理的缓存过期策略,避免大量缓存数据同时过期。
- 使用预热缓存策略,提前加载缓存数据。
- 使用限流策略,限制请求的速率,避免数据库压力过大。
缓存击穿
缓存击穿是指缓存中某个热点数据过期,导致大量请求直接访问数据库,导致数据库压力过大。
- 解决方案:
- 设置合理的缓存过期策略,避免大量缓存数据同时过期。
- 使用互斥锁,保证只有一个线程能够访问数据库,其他线程等待。
- 使用布隆过滤器,判断请求的数据是否存在于缓存中,如果不存在则直接返回。
缓存穿透
缓存穿透是指大量请求访问缓存中不存在的数据,导致大量请求直接访问数据库,导致数据库压力过大。
- 解决方案:
- 使用布隆过滤器,判断请求的数据是否存在于缓存中,如果不存在则直接返回。
- 使用缓存空对象,将不存在的数据缓存起来,避免大量请求直接访问数据库。
