Redis 命令和操作
-
Redis 命令
- 基本命令介绍和示例
-
事务和持久化
- 事务操作
- 持久化方式和机制
-
Redis 集群
- 集群架构
- 主从复制和分片
Redis 命令
基本命令介绍和示例
Redis 提供了丰富的命令集,用于对数据进行操作和管理。以下是一些常见的基本命令及其示例:
- SET key value [EX seconds] [PX milliseconds] [NX|XX]: 设置指定键的值。
bashCopy code
SET mykey "Hello"
- GET key: 获取指定键的值。
bashCopy code
GET mykey
- DEL key [key ...]: 删除一个或多个键。
bashCopy code
DEL key1 key2
- EXISTS key: 检查键是否存在。
bashCopy code
EXISTS mykey
- KEYS pattern: 查找匹配指定模式的键。
bashCopy code
KEYS mypattern*
- EXPIRE key seconds: 设置键的过期时间(秒)。
bashCopy code
EXPIRE mykey 60
- TTL key: 获取键的剩余生存时间。
bashCopy code
TTL mykey
- FLUSHDB: 清空当前数据库的所有数据。
bashCopy code
FLUSHDB
- SAVE: 将数据同步保存到磁盘上。
bashCopy code
SAVE
- INFO [section]: 获取 Redis 服务器的信息和统计数据。
bashCopy code
INFO
这些命令提供了对 Redis 数据的基本操作和管理,包括设置键值、获取值、删除键、设置过期时间、清空数据等。使用这些命令可以方便地管理 Redis 数据库。
事务和持久化
事务(Transactions)
Redis 支持事务,通过 MULTI、EXEC、DISCARD 和 WATCH 等命令实现一组命令的原子执行。
- MULTI: 开启事务,标记一个事务块的开始。
bashCopy code
MULTI
- EXEC: 执行事务中的所有命令。
bashCopy code
EXEC
- DISCARD: 取消事务,放弃执行事务中的所有命令。
bashCopy code
DISCARD
- WATCH key [key ...]: 监视一个或多个键,在事务执行前监视的键发生变化,则事务不执行。
bashCopy code
WATCH mykey
Redis 事务通过 MULTI 开始,EXEC 执行,DISCARD 取消。在 EXEC 执行时,Redis 会原子性地执行事务中的命令,保证了事务中的命令要么全部执行成功,要么全部不执行。
持久化(Persistence)
Redis 支持多种持久化方式,用于在 Redis 重启后恢复数据。
- 快照(Snapshot): 将数据以快照的形式写入磁盘,保存数据库的状态。
bashCopy code
SAVE
- 追加式文件(Append-Only File): AOF 日志记录每个写操作,重启时重新执行这些操作以恢复数据。
bashCopy code
CONFIG SET appendonly yes
Redis 提供了持久化机制,保证数据在断电或重启后不会丢失。快照方式适合小型数据库,AOF 方式适合需要更高数据安全性的场景。
持久化和事务是 Redis 提供的重要功能,可以保证数据的安全性和一致性,并且支持灵活的数据操作。
Redis集群
Redis 集群架构
Redis 集群采用分布式架构,由多个节点组成,每个节点负责存储部分数据。集群采用哈希槽(hash slot)的方式将数据分片存储在不同的节点上。每个节点负责维护部分哈希槽,并在集群中协调数据的分布。
- 哈希槽分配: Redis 集群将数据划分成 16384 个哈希槽(0-16383),每个节点负责维护其中一部分槽的数据。
- 节点间通信: 节点间通过集群总线进行通信,用于节点间的协调、数据迁移、故障检测等操作。
主从复制和分片
- 主从复制: Redis 集群中的每个节点都可以担任主节点或从节点。主节点负责处理客户端的读写请求,而从节点则负责复制主节点的数据。当主节点故障时,集群会进行自动故障转移,从节点中选举出新的主节点来接管服务。
- 分片存储: Redis 集群通过分片存储来实现数据的横向拓展。每个键值对会根据其键名经过哈希计算映射到某个哈希槽,再根据槽位的分配,被存储到相应的节点上。这种方式有效减轻了单节点的存储压力。
主从复制和分片存储是 Redis 集群中重要的机制,通过这些机制实现了数据的高可用性、分布式存储和横向拓展。这使得 Redis 能够更好地应对大规模数据存储和高并发访问的需求。