Redis从入门到实战:全面指南
一、Redis简介
Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,它可以用作数据库、缓存和消息代理。由Salvatore Sanfilippo于2009年开发,因其高性能、丰富的数据结构和广泛的语言支持而广受欢迎。
Redis核心特点:
- 内存存储:数据主要存储在内存中,提供极高的读写性能
- 持久化支持:支持RDB快照和AOF日志两种持久化方式
- 丰富的数据结构:字符串、哈希、列表、集合、有序集合等
- 原子操作:所有操作都是原子性的
- 发布/订阅:支持消息的发布订阅模式
- 高可用:通过Redis Sentinel和Redis Cluster支持高可用和分布式
二、Redis安装与配置
1. 安装Redis
Linux系统安装:
wget http://download.redis.io/releases/redis-6.2.6.tar.gz
tar xzf redis-6.2.6.tar.gz
cd redis-6.2.6
make
Docker方式运行:
docker run --name some-redis -d redis
2. 基本配置
Redis的主要配置文件是redis.conf
,常见配置项:
# 绑定IP地址
bind 127.0.0.1# 端口号
port 6379# 守护进程模式
daemonize yes# 持久化配置
save 900 1 # 900秒内有1次修改则保存
save 300 10 # 300秒内有10次修改则保存
save 60 10000 # 60秒内有10000次修改则保存# 设置密码
requirepass yourpassword
三、Redis基础数据结构与命令
1. 字符串(String)
SET key value # 设置键值
GET key # 获取值
INCR key # 值自增1
DECR key # 值自减1
EXISTS key # 检查键是否存在
EXPIRE key seconds # 设置过期时间
TTL key # 查看剩余生存时间
2. 哈希(Hash)
HSET key field value # 设置哈希字段值
HGET key field # 获取哈希字段值
HGETALL key # 获取所有字段和值
HDEL key field # 删除哈希字段
HKEYS key # 获取所有字段名
3. 列表(List)
LPUSH key value # 从左侧插入元素
RPUSH key value # 从右侧插入元素
LPOP key # 从左侧弹出元素
RPOP key # 从右侧弹出元素
LRANGE key start stop # 获取列表片段
LLEN key # 获取列表长度
4. 集合(Set)
SADD key member # 添加元素
SREM key member # 移除元素
SMEMBERS key # 获取所有成员
SISMEMBER key member # 检查成员是否存在
SCARD key # 获取集合大小
5. 有序集合(Sorted Set)
ZADD key score member # 添加带分数的成员
ZRANGE key start stop # 按分数升序获取成员
ZREVRANGE key start stop # 按分数降序获取成员
ZSCORE key member # 获取成员分数
ZRANK key member # 获取成员排名(升序)
四、Redis持久化
1. RDB(Redis Database)
RDB是Redis的默认持久化方式,通过创建数据集的快照来工作。
优点:
- 性能好,适合大规模数据恢复
- 生成的RDB文件紧凑,适合备份
缺点:
- 可能会丢失最后一次快照后的数据
- 大数据集时保存过程可能较慢
2. AOF(Append Only File)
AOF记录每个写操作命令,并在Redis重启时重新执行这些命令来恢复数据。
优点:
- 数据安全性更高,可配置不同同步频率
- AOF文件易于理解和解析
缺点:
- 文件通常比RDB大
- 恢复速度比RDB慢
配置示例:
appendonly yes
appendfsync everysec # 每秒同步一次
五、Redis高级特性
1. 事务
Redis事务通过MULTI、EXEC、DISCARD和WATCH命令实现。
MULTI
SET key1 value1
SET key2 value2
EXEC
2. 发布/订阅
# 订阅频道
SUBSCRIBE news# 发布消息
PUBLISH news "hello world"
3. Lua脚本
Redis支持通过Lua脚本执行复杂操作:
-- 示例:限流脚本