LIVE_STREAM_CONNECTED
Redis 安装配置与常用命令指南
A
Mastermind
admin
Dimension
Linux
Timestamp
2025年12月21日
Redis 是高性能的内存键值数据库,常用于缓存、会话存储、消息队列等场景。
安装
Ubuntu/Debian
sudo apt update
sudo apt install redis-server
# 启动
sudo systemctl start redis-server
sudo systemctl enable redis-server
Docker
docker run -d \
--name redis \
-p 6379:6379 \
-v redis_data:/data \
redis:latest redis-server --appendonly yes
验证
redis-cli ping
# 返回 PONG 表示成功
连接
# 本地连接
redis-cli
# 远程连接
redis-cli -h hostname -p 6379
# 带密码
redis-cli -h hostname -p 6379 -a password
# 选择数据库(0-15)
redis-cli -n 1
字符串 (String)
# 设置
SET name "hello"
SET name "hello" EX 60 # 60秒过期
SET name "hello" PX 60000 # 60000毫秒过期
SETNX name "hello" # 不存在才设置
SETEX name 60 "hello" # 设置并指定过期时间
# 获取
GET name
MGET key1 key2 key3 # 批量获取
# 批量设置
MSET key1 "v1" key2 "v2"
# 数值操作
SET counter 10
INCR counter # +1
DECR counter # -1
INCRBY counter 5 # +5
DECRBY counter 3 # -3
# 追加
APPEND name " world"
# 长度
STRLEN name
哈希 (Hash)
# 设置
HSET user:1 name "john"
HSET user:1 age 25
HMSET user:1 name "john" age 25 email "john@example.com"
# 获取
HGET user:1 name
HMGET user:1 name age
HGETALL user:1
# 删除字段
HDEL user:1 age
# 判断字段存在
HEXISTS user:1 name
# 获取所有字段/值
HKEYS user:1
HVALS user:1
# 字段数量
HLEN user:1
# 数值操作
HINCRBY user:1 age 1
列表 (List)
# 添加
LPUSH list "a" # 左侧添加
RPUSH list "b" # 右侧添加
LPUSH list "c" "d" "e" # 批量添加
# 获取
LRANGE list 0 -1 # 获取全部
LRANGE list 0 9 # 获取前10个
LINDEX list 0 # 获取指定位置
# 弹出
LPOP list # 左侧弹出
RPOP list # 右侧弹出
BLPOP list 10 # 阻塞弹出,超时10秒
# 长度
LLEN list
# 修改
LSET list 0 "new_value"
# 删除
LREM list 2 "value" # 删除2个value
集合 (Set)
# 添加
SADD tags "redis" "mysql" "mongodb"
# 获取
SMEMBERS tags # 所有成员
SISMEMBER tags "redis" # 是否存在
# 删除
SREM tags "mysql"
# 数量
SCARD tags
# 随机获取
SRANDMEMBER tags 2
# 集合运算
SINTER set1 set2 # 交集
SUNION set1 set2 # 并集
SDIFF set1 set2 # 差集
有序集合 (Sorted Set)
# 添加(score member)
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2" 150 "player3"
# 获取
ZRANGE leaderboard 0 -1 # 按分数升序
ZRANGE leaderboard 0 -1 WITHSCORES # 带分数
ZREVRANGE leaderboard 0 9 # 按分数降序前10
ZRANGEBYSCORE leaderboard 100 200 # 分数范围
# 分数操作
ZSCORE leaderboard "player1" # 获取分数
ZINCRBY leaderboard 50 "player1" # 增加分数
# 排名
ZRANK leaderboard "player1" # 升序排名
ZREVRANK leaderboard "player1" # 降序排名
# 删除
ZREM leaderboard "player1"
# 数量
ZCARD leaderboard
ZCOUNT leaderboard 100 200 # 分数范围内数量
键操作
# 查看键
KEYS * # 所有键(生产慎用)
KEYS user:* # 匹配模式
SCAN 0 MATCH user:* COUNT 100 # 安全遍历
# 判断存在
EXISTS key
# 删除
DEL key
DEL key1 key2 key3
# 过期时间
EXPIRE key 60 # 设置60秒过期
TTL key # 查看剩余时间
PERSIST key # 移除过期时间
# 重命名
RENAME oldkey newkey
# 类型
TYPE key
发布订阅
# 订阅频道
SUBSCRIBE channel1
# 发布消息
PUBLISH channel1 "hello"
# 模式订阅
PSUBSCRIBE news.*
事务
MULTI # 开始事务
SET key1 "value1"
SET key2 "value2"
INCR counter
EXEC # 执行事务
DISCARD # 取消事务
持久化
RDB 快照
# 手动触发
SAVE # 阻塞保存
BGSAVE # 后台保存
AOF 日志
编辑 /etc/redis/redis.conf:
appendonly yes
appendfsync everysec
配置
# 查看配置
CONFIG GET maxmemory
CONFIG GET *
# 修改配置
CONFIG SET maxmemory 1gb
# 设置密码
CONFIG SET requirepass "your_password"
配置文件 /etc/redis/redis.conf:
# 绑定地址
bind 0.0.0.0
# 密码
requirepass your_password
# 最大内存
maxmemory 1gb
maxmemory-policy allkeys-lru
# 持久化
appendonly yes
常用场景
缓存
SET cache:user:1 '{"name":"john"}' EX 3600
GET cache:user:1
计数器
INCR page:views:home
GET page:views:home
分布式锁
SET lock:order:123 "owner" NX EX 30
DEL lock:order:123
排行榜
ZINCRBY leaderboard 10 "user:1"
ZREVRANGE leaderboard 0 9 WITHSCORES
监控
# 实时监控命令
MONITOR
# 统计信息
INFO
INFO memory
INFO stats
# 慢查询
SLOWLOG GET 10
总结
Redis 核心数据结构:String、Hash、List、Set、Sorted Set。灵活运用可实现缓存、计数、排行榜、消息队列等功能。