*Redis 简介

Redis 是开源的内存数据结构服务器,可用作缓存、数据库和消息中间件。它将数据保存在内存中,并提供持久化、复制、哨兵和集群等能力,适合需要低延迟读写、灵活数据结构或实时消息处理的场景。

*Redis 可以用来做什么

常见用途包括:

  • 缓存:保存数据库查询结果、页面片段或计算结果,并通过过期时间控制缓存生命周期。
  • 会话与临时状态:存储登录会话、验证码和短期令牌。
  • 计数与限流:利用 INCR、EXPIRE 等命令实现计数器、访问频率限制和配额控制。
  • 排行榜与范围查询:使用有序集合按分数排序和检索。
  • 任务与事件处理:使用列表、Stream 或发布订阅传递任务和事件。不同方案的持久性、确认机制和消费语义不同,需要按业务要求选择。

Redis 并不适合所有数据。成本、容量、持久性、复杂查询和事务要求都应纳入选型;数据量较大或需要复杂关系查询时,通常仍需配合其他数据库。

*支持的数据类型

Redis 支持多种数据类型,每种类型都有对应的专用命令:

位图和位域基于字符串实现。JSON、时间序列、搜索等扩展能力的可用性取决于所使用的 Redis 产品和模块,不能默认所有 Redis 实例都支持。

*主要特性

*内存访问与单键操作

Redis 主要在内存中处理数据。多数命令围绕特定数据类型设计,文档会注明时间复杂度。单个命令的执行具有原子性,但多个命令是否作为一个整体执行,需要使用事务或脚本并理解各自语义。

*持久化

Redis 提供 RDB 快照和 AOF 日志,也可以组合使用。持久化方式会影响性能、恢复时间和故障时可能丢失的数据量;开启持久化并不等于绝不丢数据,仍需备份和恢复演练。

*复制与高可用

主从复制可以将数据复制到副本,默认采用异步复制。哨兵用于监控和自动故障转移,Redis Cluster则提供哈希槽分片和集群高可用。故障切换期间仍可能存在数据丢失或短暂不可用,需要结合业务目标设计。

*可编程能力

Redis 支持事务、Lua 脚本和 Functions。它们适合将一组服务器端操作放在一起执行,但长时间运行的脚本会阻塞其他命令,应控制执行时间。

*快速验证

安装并启动 Redis 后,可以用 redis-cli 检查服务:

redis-cli PING
# PONG

redis-cli SET greeting "hello"
# OK

redis-cli GET greeting
# "hello"

生产环境不要直接以默认监听配置暴露到公网。部署前应配置防火墙、认证或 ACL,并根据需要启用传输加密,详见安全文档。

*在程序中使用

可以通过各语言客户端访问 Redis。选择客户端时,除了 API,还应确认维护状态、连接池、超时、重连、集群和 RESP 协议支持。

Redis 使用 ANSI C 编写,主要生产部署平台是 Linux。macOS 可用于本地开发;Windows 环境可根据官方安装指南选择 WSL、Docker 或兼容方案。具体步骤见下载与安装。