HIGH_FREQUENCY_MODE

NextBlog
NEXT.

下一个博客,记录精彩生活

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。灵活运用可实现缓存、计数、排行榜、消息队列等功能。

评论

加载评论中...
Spirit Sync

"正在同步你的多巴胺频率,建立高维链接..."