一、Redis
1. Redis介绍
- 定义: Redis是一个开源的、BSD许可的高级键值存储系统
- 官方描述: 常被称为数据结构服务器,因为键可以包含字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和有序集合(sorted sets)
- 官方网站: redis.io(后缀.io暗示其高性能特性)
2. Redis特点
1)与Memcached的区别
- 定位差异:
- Memcached: 明确自称是"内存对象缓存系统"(memory object caching system),主要用于加速动态web应用
- Redis: 定位为"高级键值存储"(advanced key-value store),设计目的更偏向数据存储
- 功能差异:
- Memcached: 仅支持简单的键值存储
- Redis: 支持丰富的数据结构(string, hash, list, set, sorted set)
- 持久化:
- Redis: 原生支持持久化和集群功能
- Memcached: 纯内存缓存,不提供持久化机制
2)核心特性
- 开源许可: 采用BSD许可证
- 数据结构丰富: 支持5种主要数据结构
- 集群支持: 原生支持集群部署
- 持久化机制: 提供数据持久化方案
- 扩展性: 可通过PHP等客户端进行操作
- 实战应用: 适合与MySQL配合实现高速写入场景(如微博热数据)
3. Redis特点及安装
1)Redis与Memcached的比较
- 存储定位差异:
- Redis本意用于存储(Storage),数据可持久化保存
- Memcached主要用于缓存(Cache),数据临时存储
- 数据安全性:
- Redis支持持久化,内存数据可同步到硬盘,适合存储关键数据
- Memcached数据可能随时丢失,仅作为查询加速的临时备份
- 典型应用场景:
- Redis:用户注册信息等需要长期保存的数据
- Memcached:临时缓存查询结果缓解数据库压力
2)Redis介绍
- 基本属性:
- 开源项目,采用BSD许可证
- 高级键值(Key-Value)存储系统
- 支持多种数据结构的数据服务器
- Redis与Memcached的区别
- 功能定位:
- Redis:完整存储解决方案,支持持久化
- Memcached:轻量级缓存工具
- 数据结构支持:
- Redis支持5种数据结构:字符串、哈希、链表、集合、有序集合
- Memcached仅支持字符串类型
- 发展历史:
- Redis相对年轻(2008-2009年推出)
- Memcached历史更悠久
- 功能定位:
- Redis的持久化功能
- 实现原理:
- 将内存数据同步到硬盘/光盘等永久存储介质
- 核心价值:
- 确保数据安全不丢失
- 支持关键业务数据存储
- 典型应用:
- 用户账户信息存储
- 交易记录保存
- 实现原理:
- Redis的数据结构类型
- 支持的数据结构:
- 字符串(String)
- 哈希(Hash)
- 链表(List)
- 集合(Set)
- 有序集合(Sorted Set)
- 与Memcached对比:
- Memcached仅支持字符串单一类型
- Redis数据结构丰富,适用场景更广
- 支持的数据结构:
- Redis在NoSQL领域的地位
- 市场表现:
- 虽起步较晚(2008-2009)
- 快速获得市场认可
- 在NoSQL领域占据重要地位
- 技术优势:
- 丰富的数据结构支持
- 可靠的持久化机制
- 高性能表现
3)Redis安装
- 官方网站下载
- 版本选择原则:对于开源软件,建议选择最新的稳定版(stable)而非最新版,因为稳定版经过充分测试且代码贡献者众多,更新频繁但稳定性更有保障。
- 当前稳定版:Redis 8.0.2是当前最新的稳定版本,适合生产环境使用。
- 下载链接:官方下载地址为http://download.redis.io/releases/
-
redis-7.4.0.tar.gz 29-Jul-2024 05:41 3525325 redis-7.4.1.tar.gz 02-Oct-2024 19:19 3529512 redis-7.4.2.tar.gz 06-Jan-2025 15:16 3533864 redis-7.4.3.tar.gz 24-Apr-2025 06:08 3530739 redis-7.4.4.tar.gz 27-May-2025 14:07 3531569 redis-7.4.5.tar.gz 06-Jul-2025 12:24 3532716 redis-8.0-rc1.tar.gz 07-Apr-2025 09:21 3806989 redis-8.0.0.tar.gz 02-May-2025 11:21 3824488 redis-8.0.1.tar.gz 13-May-2025 13:35 3811847 redis-8.0.2.tar.gz 27-May-2025 14:03 3815180 redis-8.0.3.tar.gz 06-Jul-2025 12:26 3821948 redis-8.2-m01.tar.gz 19-Jun-2025 07:22 3849094 redis-8.2-rc1.tar.gz 04-Jul-2025 06:53 3880248
- 版本管理规范
- 版本号格式:采用标准的三段式版本号major.minor.patchlevel
- 稳定性标识:
- 偶数minor表示稳定版(如2.6.x)
- 奇数minor表示开发版(如2.7.x)
- 版本演进:开发版稳定后会升级为下一个偶数版本(如2.7.x稳定后变为2.8)
- 2.6版本特性
- 核心改进:
- 支持Lua脚本
- 毫秒级过期时间精度
- 优化的内存使用
- 无限制的客户端连接数
- 改进的AOF持久化
- 完整特性:需查阅官方Release Notes获取全部新特性和修复列表
- 核心改进:
- 其他版本说明
- 2.8版本:
- 处于RC5候选阶段
- 主要改进:部分复制重同步、IPv6支持、配置重写等
- 目前为beta质量,不建议生产环境使用
- 开发版:仅建议核心开发者使用
- Windows支持:
- 非官方支持
- 微软Open Tech小组维护实验性版本
- 不建议生产环境使用
- 2.8版本:
- 下载及安装过程
- Redis下载
- 下载步骤:
- 进入/usr/local/src目录
- 使用wget http://download.redis.io/releases/redis-2.6.16.tar.gz命令下载
- 下载完成后会得到redis-2.6.16.tar.gz压缩包
- Redis安装步骤
- Redis特点:
- 开源、BSD许可的高级key-value存储系统
- 可存储字符串、哈希结构、链表、集合等数据结构
- 与Memcached相比的独特之处:
- 可用作存储(storage),具有持久化功能
- 支持多种数据结构类型,而Memcached仅支持字符串
- 安装准备:
- 官方站点:redis.io
- 下载最新稳定版
- 解压源码并进入目录
- 编译与测试
- 编译特点:
- Redis源码已预先configure过,无需手动configure
- 直接执行make命令即可开始编译
- 常见问题处理:
- 时间错误:由于源码是官方configure过的,生成的文件有时间戳信息,如果虚拟机时间不对(如2012年),会导致编译失败
- 解决方法:
- 测试依赖:
- 执行make test时可能需要TCL 8.4+,可通过yum install tcl安装
- 时间错误:由于源码是官方configure过的,生成的文件有时间戳信息,如果虚拟机时间不对(如2012年),会导致编译失败
- 编译特点:
- 安装路径指定
- 安装方法:
- 使用make PREFIX=/usr/local/redis install命令
- 注意:PREFIX必须大写
- 安装完成后会在指定目录下生成bin目录
- 安装后的文件说明
- 生成的可执行文件:
- redis-benchmark:性能测试工具
- redis-check-aof:AOF日志文件检测工具(可检测并修复断电造成的日志损坏)
- redis-check-dump:快照文件检测工具
- redis-cli:客户端程序
- redis-server:服务端程序
- 后续配置:
- 复制配置文件:cp /path/redis.conf /usr/local/redis
- 启动服务:/path/to/redis/bin/redis-server ./path/to/conf-file
- 连接服务:/path/to/redis/bin/redis-cli [-h localhost -p 6379]
- Redis下载
- 复制配置文件并启动连接
- 复制配置文件
- 配置文件来源: 从Redis源代码目录中复制给定的配置文件到当前安装目录
- 操作命令: cp /usr/local/src/redis-2.6.16/redis.conf /usr/local/redis/
- 验证方法: 使用ls命令检查当前目录下是否存在redis.conf文件
- 安装与文件检查
- 安装目录结构:
- /usr/local/redis/bin/目录下包含5个关键文件
- redis-benchmark: 性能测试工具
- redis-check-aof: AOF日志文件检测工具
- redis-check-dump: 快照文件检测工具
- redis-cli: 客户端程序
- redis-server: 服务端程序
- 安装验证: 通过ls bin/命令检查上述文件是否存在
- 安装目录结构:
- 启动Redis服务
- 启动命令: ./bin/redis-server ./redis.conf
- 前台运行特点: 终端会被服务进程占据,不能关闭否则服务会终止
- 启动成功标志:
- 显示Redis ASCII艺术logo(宝石形状)
- 输出"server started"信息
- 提示"ready to accept connections on port 6379"
- 连接Redis客户端
- 连接命令: ./bin/redis-cli
- 默认连接参数: 自动连接127.0.0.1:6379
- 基础操作验证:
- set site www.zixue.it: 设置键值对
- get site: 获取键对应的值
- 连接中断问题: 如果服务端终止,客户端会显示"connection refused"
- Redis与Memcached的比较
- 核心区别:
- 持久化功能: Redis可用作存储(storage),Memcached仅作缓存(cache)
- 数据结构支持:
- Memcached仅支持字符串类型
- Redis支持字符串、链表、哈希、集合、有序集合
- 命令复杂度: Redis命令比Memcached多得多,因其数据结构更丰富
- 核心区别:
- 修改配置使Redis后台运行
- 关键配置项: daemonize yes
- 修改步骤:
- 编辑redis.conf文件
- 找到daemonize no改为yes
- 保存配置文件
- 重新启动服务
- 效果验证: 服务启动后立即返回终端提示符,不占据终端
- 验证后台运行的Redis服务
- 进程检查方法: 使用ps aux | grep redis查看后台进程
- 数据持久性验证:
- 重启服务后之前设置的键值对(site)会丢失
- 需要配置持久化策略才能保持数据(后续讲解)
- 服务管理建议: 以后台模式运行适合生产环境,前台模式适合调试
- 复制配置文件
二、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
Redis简介 | 开源BSD许可的高级键值存储系统,设计目的主要用于存储而非缓存 | 与Memcached的核心区别(存储vs缓存) | ⭐⭐ |
Redis特点 | 支持持久化、丰富数据结构(字符串/哈希/链表/集合/有序集合) | 持久化实现原理与数据结构差异 | ⭐⭐⭐ |
Redis与Memcached对比 | 存储功能 vs 纯缓存、多数据结构 vs 仅字符串 | 应用场景选择依据 | ⭐⭐⭐⭐ |
Redis安装步骤 | 源码编译安装(make/make install)、配置文件修改(daemonize yes) | 时间错误处理、TCL依赖安装 | ⭐⭐ |
基础操作 | SET/GET命令、默认端口6379、redis-cli连接方式 | 服务端与客户端交互流程 | ⭐ |
持久化机制 | RDB快照与AOF日志两种方式,通过check-aof/check-dump工具校验 | 数据恢复策略差异 | ⭐⭐⭐⭐ |
数据类型操作 | 字符串/哈希/链表/集合/有序集合的专属命令集 | 不同结构的适用场景 | ⭐⭐⭐ |
集群功能 | 分布式存储方案设计原理 | 节点通信与数据分片 | ⭐⭐⭐⭐ |
实战应用 | 微博热数据案例:Redis+MySQL组合实现高速写入与持久化 | 架构设计权衡点 | ⭐⭐⭐⭐ |
运维要点 | 性能测试(redis-benchmark)、日志检查工具使用 | 常见故障排查方法 | ⭐⭐⭐ |