Redis

一、 适用场景

  • 典型场景:数据量小、查询(尤其是读操作)极其频繁的应用。

  • 具体案例:首页广告、热点资讯、秒杀库存、会话缓存等。

  • 为什么用Redis

    • MySQL瓶颈:数据存储在硬盘,面对高并发(如每秒数万次查询)时,I/O会成为性能瓶颈。

    • Redis优势:数据主要存储在内存中,读写速度极快(读:~110,000次/秒,写:~81,000次/秒),能轻松支撑高并发访问。

二、 Redis简介

Redis 是一个用 C 语言编写的、高性能的键值对(Key-Value)数据库。它将数据主要存储在内存中,因此具备极高的读写性能。它支持多种数据结构(字符串、哈希、列表、集合、有序集合等),并提供了持久化、主从复制、事务等功能。

三、 安装与启动(以3.0.0为例)

  1. 上传并解压tar -zxvf redis-3.0.0.tar.gz

  2. 安装依赖yum install gcc-c++

  3. 编译安装 :进入解压目录,执行 make然后 make install PREFIX=/usr/local/redis

  4. 配置 :拷贝配置文件 redis.conf到安装目录的 bin/下,并修改 daemonize yes以支持后台运行。

  5. 启动./redis-server redis.conf

  6. 连接测试./redis-cli

  7. 关闭./redis-cli shutdown

四、 基本命令

  • keys *:查看所有键。

  • exists key:判断键是否存在。

  • expire key seconds/ ttl key:设置/查看键的过期时间。

  • incr key/ decr key:对数值型键值进行原子性的自增/自减。

五、 多数据库

  • 一个Redis实例默认提供16个数据库(编号0-15),可通过 SELECT index切换。

  • FLUSHDB:清空当前数据库。

  • FLUSHALL:清空所有数据库。

六、 持久化(核心机制)

Redis 提供了两种主要的持久化方式,将内存数据保存到磁盘以防数据丢失。

  1. RDB (Redis DataBase)

    • 机制 :在指定时间间隔内,将内存中的数据集快照 写入磁盘二进制文件(默认 dump.rdb)。

    • 触发策略 (在 redis.conf中配置):

      • save 900 1(900秒内至少有1个key变化)

      • save 300 10(300秒内至少有10个key变化)

      • save 60 10000(60秒内至少有10000个key变化)

    • 优点:性能影响小,恢复大数据集速度快。

    • 缺点:可能丢失最后一次快照之后的数据(数据完整性有损)。

  2. AOF (Append Only File)

    • 机制 :记录每一次写操作命令,以日志形式追加到文件(默认 appendonly.aof)中。

    • 同步策略appendfsync):

      • always:每次写都同步,最安全,性能最低。

      • everysec:每秒同步一次(默认),平衡了性能和安全。

      • no:由操作系统决定,性能好,安全性低。

    • 优点 :数据完整性高,最多丢失一秒数据(everysec策略下)。

    • 缺点:AOF文件体积通常比RDB大,恢复速度较慢,对性能有一定影响。

小结:RDB 适用于可容忍少量数据丢失、追求快速恢复的场景;AOF 适用于对数据安全性要求极高的场景。生产环境常两者结合使用。

七、 主从复制

用于构建高可用、读写分离的架构。

  1. 工作流程

    a. 从节点(Slave)向主节点(Master)发送 SYNC命令。

    b. 主节点执行 BGSAVE生成RDB快照文件发送给从节点。

    c. 主节点将生成RDB期间的写命令缓存并发送给从节点,从节点执行这些命令以保持同步。

  2. 配置

    • 主节点:无需特殊配置。

    • 从节点:在配置文件中添加 slaveof masterIP masterPort,或在客户端执行该命令。

  3. 特点

    • 读写分离:主节点负责写,从节点负责读,分担主节点压力。

    • 数据冗余:从节点是主节点的数据备份。

    • 故障处理 :主节点宕机后,从节点不会自动升级为主节点,只能提供读服务。需要引入哨兵(Sentinel)或集群模式来实现高可用和自动故障转移。

相关推荐
Ricky_Theseus2 小时前
SPOOLING 系统详解
linux·服务器·数据库
HUGu RGIN2 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
卢光庆2 小时前
aardio - wsock.tcp.simpleHttpServer 访问数据库例程
数据库
木心术12 小时前
OpenClaw数据库自动化部署与网站接口调通全流程指南
运维·数据库·自动化
枕布响丸辣2 小时前
MySQL 主从复制与 MyCat 分库分表实战详解
数据库·mysql
eRTE XFUN2 小时前
Redis 设置密码(配置文件、docker容器、命令行3种场景)
数据库·redis·docker
Lhan.zzZ2 小时前
Qt开发踩坑:QList越界问题导致程序崩溃
数据库·c++·qt
8Qi83 小时前
Redis哨兵模式(Sentinel)深度解析
java·数据库·redis·分布式·缓存·sentinel