Redis 教程

Redis 教程(中文版)

Redis(REmote DIctionary Server)是一个高性能的开源、内存键值存储数据库,常用于缓存、会话存储、排行榜、消息队列等场景。本教程从零开始,带你快速上手 Redis。


一、Redis 简介

特性说明
数据结构丰富String、Hash、List、Set、Sorted Set、Bitmap、HyperLogLog、Geo 等
内存存储数据默认存于内存,速度极快(>10万 QPS)
支持持久化RDB(快照)、AOF(日志)
高可用主从复制、Sentinel、Redis Cluster
发布/订阅支持 Pub/Sub 消息模式
Lua 脚本支持服务器端脚本
事务MULTI/EXEC 支持简单事务

二、安装 Redis

1. Linux(Ubuntu/Debian)

# 更新包列表
sudo apt update

# 安装 Redis
sudo apt install redis-server

# 启动服务
sudo systemctl start redis

# 开机自启
sudo systemctl enable redis

2. macOS(Homebrew)

brew install redis
brew services start redis

3. Windows(官方已停止支持,可用 WSL 或 Docker)

# Docker 方式(推荐)
docker run -d --name my-redis -p 6379:6379 redis:latest

验证安装:

redis-cli ping
# 输出:PONG

三、基本命令操作(redis-cli)

1. 字符串(String)

SET name "张三"
GET name
INCR counter        # 自增
DECR counter        # 自减
DEL name

2. 哈希(Hash)

HSET user:1001 name "李四" age 25
HGET user:1001 name
HGETALL user:1001
HINCRBY user:1001 age 1

3. 列表(List)

LPUSH mylist "A"
RPUSH mylist "C"
LPUSH mylist "B"
LRANGE mylist 0 -1   # 输出: B A C
LPOP mylist          # 弹出 B
RPOP mylist          # 弹出 C

4. 集合(Set)

SADD myset "apple" "banana" "apple"
SMEMBERS myset       # apple, banana
SINTER set1 set2     # 交集
SUNION set1 set2     # 并集

5. 有序集合(Sorted Set)

ZADD ranking 100 "张三"
ZADD ranking 95 "李四"
ZADD ranking 88 "王五"
ZRANGE ranking 0 -1 WITHSCORES
ZREVRANK ranking "李四"   # 排名第几(从0开始)

四、持久化配置(redis.conf)

# RDB 快照(默认)
save 900 1      # 900秒内至少1个键变化
save 300 10
save 60 10000

# AOF 日志(更安全)
appendonly yes
appendfsync everysec   # 每秒同步

重启 Redis 后自动加载持久化数据。


五、主从复制(Replication)

主节点(master.conf)

bind 0.0.0.0
port 6379

从节点(slave.conf)

bind 0.0.0.0
port 6380
replicaof 127.0.0.1 6379   # 指向主节点

启动:

redis-server master.conf
redis-server slave.conf

查看状态:

redis-cli -p 6380 info replication

六、发布/订阅(Pub/Sub)

# 订阅频道
SUBSCRIBE news

# 发布消息(另一个终端)
PUBLISH news "Hello Redis!"

七、事务与 Lua 脚本

事务

MULTI
SET key1 "value1"
INCR counter
EXEC

Lua 脚本

EVAL "return redis.call('set', KEYS[1], ARGV[1])" 1 name "王五"

八、常用客户端

语言客户端
Pythonredis-py
Node.jsioredis / node-redis
JavaJedis / Lettuce
Gogo-redis

Python 示例

pip install redis
import redis

r = redis.Redis(host='localhost', port=6379, db=0)
r.set('name', '张三')
print(r.get('name'))  # b'张三'

九、Redis 集群(Cluster)

# 启动多个实例(不同端口)
redis-server --port 7000 --cluster-enabled yes
redis-server --port 7001 --cluster-enabled yes
...

# 创建集群
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 ... --cluster-replicas 1

十、性能优化建议

  1. 避免大 key:拆分大 List/Hash
  2. 使用 Pipeline 批量操作
  3. 设置合理过期时间EXPIRE key 3600
  4. 监控慢查询SLOWLOG GET 10
  5. 内存管理maxmemory-policy allkeys-lru

十一、常见问题

问题解决方案
连接超时检查防火墙、bind 配置
内存爆掉设置 maxmemory + 淘汰策略
数据丢失开启 AOF + RDB
主从不同步检查网络、日志

学习资源

  • 官方文档:https://redis.io/documentation
  • Redis 大学:https://university.redis.com
  • 《Redis 实战》书籍
  • GitHub: https://github.com/redis/redis

动手练习

# 1. 安装 Redis
# 2. 启动 redis-cli
# 3. 执行以下命令:
SET hello "world"
INCRBY visits 10
EXPIRE hello 60
TTL hello

你已掌握 Redis 基础!

后续进阶方向:

  • Redis Cluster 高可用
  • Redis Module(RedisJSON、RediSearch)
  • 缓存穿透/雪崩/击穿解决方案
  • 与 Spring Boot 集成

需要 完整项目实战(如:秒杀系统、排行榜)?告诉我,我给你代码!

文章已创建 2481

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部