Skip to content

Redis 简介

什么是Redis?

Redis(Remote Dictionary Server)是一个开源的内存数据库,支持多种数据结构,常用作缓存、消息队列和会话存储。

主要特性

  • 高性能:基于内存,读写速度极快
  • 丰富的数据类型:String、Hash、List、Set、ZSet等
  • 持久化:支持RDB和AOF两种持久化方式
  • 高可用:支持主从复制、哨兵模式、集群模式
  • 原子操作:所有操作都是原子性的
  • 支持事务:通过MULTI/EXEC实现事务

应用场景

1. 缓存

redis
# 缓存用户信息
SET user:1001 '{"name":"GlowXQ","age":25}'
GET user:1001

# 设置过期时间
SETEX session:abc123 3600 "user_data"

2. 计数器

redis
# 文章点赞数
INCR article:1001:likes
DECR article:1001:likes
GET article:1001:likes

3. 排行榜

redis
# 游戏积分排行榜
ZADD leaderboard 9500 "player1"
ZADD leaderboard 8800 "player2"
ZADD leaderboard 9200 "player3"

# 获取前10名
ZREVRANGE leaderboard 0 9 WITHSCORES

4. 消息队列

redis
# 生产者
LPUSH queue:tasks "task1"
LPUSH queue:tasks "task2"

# 消费者
RPOP queue:tasks

5. 分布式锁

redis
# 获取锁
SET lock:resource "uuid" NX EX 30

# 释放锁
DEL lock:resource

6. 会话存储

redis
# 存储Session
SETEX session:user:1001 1800 '{"user_id":1001,"username":"glowxq"}'

安装与启动

安装

bash
# Ubuntu/Debian
sudo apt-get install redis-server

# CentOS/RHEL
sudo yum install redis

# macOS
brew install redis

# Docker
docker run -d --name redis -p 6379:6379 redis:latest

启动

bash
# 启动服务
redis-server

# 指定配置文件
redis-server /etc/redis/redis.conf

# 连接客户端
redis-cli

# 连接指定主机和端口
redis-cli -h 127.0.0.1 -p 6379

# 带密码连接
redis-cli -a password

基本命令

通用命令

redis
# 查看所有键
KEYS *

# 判断键是否存在
EXISTS key

# 删除键
DEL key

# 设置过期时间(秒)
EXPIRE key 60

# 设置过期时间(毫秒)
PEXPIRE key 60000

# 查看剩余时间
TTL key

# 移除过期时间
PERSIST key

# 查看键的类型
TYPE key

# 重命名键
RENAME oldkey newkey

# 选择数据库(0-15)
SELECT 0

# 清空当前数据库
FLUSHDB

# 清空所有数据库
FLUSHALL

连接命令

redis
# 测试连接
PING  # 返回PONG

# 认证
AUTH password

# 选择数据库
SELECT 1

# 退出
QUIT

服务器命令

redis
# 查看服务器信息
INFO

# 查看统计信息
INFO stats

# 查看内存使用
INFO memory

# 查看客户端连接
CLIENT LIST

# 保存数据到磁盘
SAVE       # 阻塞保存
BGSAVE     # 后台保存

# 获取配置
CONFIG GET *

# 设置配置
CONFIG SET maxmemory 256mb

# 监控实时命令
MONITOR

Redis配置

基本配置

conf
# 绑定IP
bind 127.0.0.1

# 端口
port 6379

# 后台运行
daemonize yes

# 日志级别
loglevel notice

# 日志文件
logfile /var/log/redis/redis.log

# 数据库数量
databases 16

# 密码
requirepass your_password

# 最大内存
maxmemory 256mb

# 内存淘汰策略
maxmemory-policy allkeys-lru

持久化配置

conf
# RDB持久化
save 900 1      # 900秒内至少1个键改变
save 300 10     # 300秒内至少10个键改变
save 60 10000   # 60秒内至少10000个键改变

# RDB文件名
dbfilename dump.rdb

# 数据目录
dir /var/lib/redis

# AOF持久化
appendonly yes
appendfilename "appendonly.aof"

# AOF同步策略
appendfsync everysec  # 每秒同步(推荐)
# appendfsync always  # 每次写入同步(最安全)
# appendfsync no      # 由操作系统决定(最快)

性能测试

bash
# 基准测试
redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000

# 测试SET命令
redis-benchmark -t set -n 100000 -q

# 测试GET命令
redis-benchmark -t get -n 100000 -q

# 测试多个命令
redis-benchmark -t set,lpush -n 100000 -q

# 测试管道性能
redis-benchmark -n 1000000 -t set,get -P 16 -q

Redis数据库

Redis默认有16个数据库(0-15),可以通过SELECT命令切换。

redis
# 切换到数据库1
SELECT 1

# 移动键到其他数据库
MOVE key 2

# 查看当前数据库键的数量
DBSIZE

事务

Redis事务通过MULTI、EXEC、DISCARD和WATCH等命令实现。

redis
# 开启事务
MULTI

# 执行命令(命令进入队列)
SET key1 "value1"
SET key2 "value2"
INCR counter

# 执行事务
EXEC

# 取消事务
DISCARD

# 监视键(乐观锁)
WATCH key
MULTI
SET key "newvalue"
EXEC

💡 提示

这是一个demo文档,欢迎补充更多Redis相关内容。

深入学习

基于 VitePress 构建