Redis 是一个开源的内存数据结构存储系统,支持多种数据结构,包括字符串、哈希、列表、集合、排序集合等。它通常用作数据库、缓存和消息代理。Redis 以其高速性能和丰富的功能而闻名,被广泛用于各种场景。
Redis 详细介绍
-
主要特性:
- 内存存储:Redis 将数据存储在内存中,因此读写速度非常快。
- 持久化选项:支持将数据快照保存到磁盘(RDB)或将每次写操作日志记录到磁盘(AOF),以便在重启时恢复数据。
- 数据结构:支持多种数据结构,如字符串、哈希、列表、集合、排序集合等。
- 高可用性:通过主从复制、自动故障转移和哨兵机制实现高可用性。
- 分布式:支持分片(Cluster)以实现水平扩展。
- 事务:支持事务,通过 MULTI、EXEC、DISCARD、WATCH 等命令实现。
-
常用数据结构:
- 字符串(String):可以存储任何类型的值,包括数字和文本。
- 哈希(Hash):适用于存储对象类型的数据结构,支持键值对操作。
- 列表(List):有序的字符串集合,支持从两端推入和弹出。
- 集合(Set):无序的字符串集合,支持集合运算如交集、并集和差集。
- 排序集合(Sorted Set):每个元素都有一个分数,可以按分数排序。
-
持久化机制:
- RDB(Redis 数据库备份):定期生成数据快照。
- AOF(追加文件):记录每次写操作到日志文件中。
-
高可用性和分布式:
- 主从复制:主节点将数据复制到从节点,以实现数据冗余。
- Redis Sentinel:监控 Redis 实例,自动故障转移。
- Redis Cluster:通过分片将数据分布在多个 Redis 节点上,实现水平扩展。
Redis 使用方法
-
安装 Redis:
- 在 Unix 系统中,可以通过包管理器(如
apt-get
、yum
)安装,或者从 Redis 官网 下载源代码进行编译。 - Windows 用户可以使用 WSL(Windows Subsystem for Linux)安装,或者使用第三方构建。
- 在 Unix 系统中,可以通过包管理器(如
-
基本操作:
- 启动 Redis 服务器:
redis-server
- 连接 Redis 服务器:
redis-cli
- 启动 Redis 服务器:
-
常用命令:
- 字符串操作:
SET key value # 设置键值对 GET key # 获取键对应的值
- 哈希操作:
HSET hash key value # 设置哈希字段的值 HGET hash key # 获取哈希字段的值
- 列表操作:
LPUSH list value # 在列表左侧插入元素 RPUSH list value # 在列表右侧插入元素 LRANGE list start stop # 获取列表指定范围的元素
- 集合操作:
SADD set value # 向集合中添加元素 SMEMBERS set # 获取集合中的所有元素
- 排序集合操作:
ZADD zset score value # 向排序集合中添加元素 ZRANGE zset start stop # 获取排序集合中的指定范围元素
- 字符串操作:
-
持久化配置:
- RDB 配置:
在redis.conf
文件中配置快照策略:save 900 1 # 900 秒内有 1 次修改,则创建快照 save 300 10 # 300 秒内有 10 次修改,则创建快照
- AOF 配置:
启用 AOF 持久化:appendonly yes appendfsync everysec
- RDB 配置:
-
使用 Redis 客户端库:
- Redis 支持多种编程语言的客户端库,例如 Python 的
redis-py
、Java 的Jedis
、Node.js 的ioredis
等。 - 使用示例(Python):
import redis # 连接 Redis r = redis.Redis(host='localhost', port=6379, db=0) # 设置键值对 r.set('foo', 'bar') # 获取键值对 value = r.get('foo') print(value.decode('utf-8')) # 输出 'bar'
- Redis 支持多种编程语言的客户端库,例如 Python 的
Redis 的文档非常详细,可以参考官方文档 Redis Documentation 以获取更多信息和进阶用法。
Spring Boot 中使用 Redis可参考下篇内容