随机
Enter 搜索 ↑↓ 切换 Esc 清空

redis-cli

命令

Redis 命令行客户端

redis-cli

Redis 命令行客户端

补充说明

redis-cli 是 Redis 数据库的命令行客户端,用于连接 Redis 服务器、执行命令、管理数据。是 Redis 运维和开发的核心工具。

语法

redis-cli [OPTIONS] [COMMAND [ARG...]]

连接选项

-h <host>          # 服务器地址,默认 127.0.0.1
-p <port>          # 端口号,默认 6379
-a <password>      # 密码认证
--user <user>      # 用户名(Redis 6.0+ ACL)
-n <db>            # 数据库编号,默认 0
--raw              # 原始输出模式
--no-raw           # 禁用原始输出
--csv              # CSV 格式输出
--stat             # 实时统计
--latency          # 延迟统计
--rdb <filename>   # 导出 RDB 文件
--pipe             # 管道模式
--bigkeys          # 查找大键
--scan             # 扫描模式

连接实例

# 连接本地 Redis
redis-cli

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

# 带密码连接
redis-cli -h 192.168.1.100 -p 6379 -a mypassword

# 连接指定数据库
redis-cli -n 1

# 使用 URL 连接
redis-cli -u redis://user:password@host:6379/0

# Unix socket 连接
redis-cli -s /var/run/redis/redis.sock

# 交互模式连接后测试
redis-cli ping
# PONG

字符串操作

# 设置值
SET key value
SET key value EX 3600          # 设置过期时间(秒)
SET key value PX 3600000       # 设置过期时间(毫秒)
SET key value NX               # 仅当键不存在时设置
SET key value XX               # 仅当键存在时设置
SETEX key 3600 value           # 设置值并指定过期时间

# 获取值
GET key
GET key EX                     # 获取值并延长过期时间
GETDEL key                     # 获取值后删除

# 批量操作
MSET key1 value1 key2 value2   # 批量设置
MGET key1 key2                 # 批量获取

# 数值操作
INCR key                       # 递增 1
INCRBY key 10                  # 递增指定值
DECR key                       # 递减 1
DECRBY key 10                  # 递减指定值
INCRBYFLOAT key 2.5            # 浮点数递增

# 追加操作
APPEND key value               # 追加字符串
STRLEN key                     # 获取字符串长度
GETRANGE key 0 10              # 获取子串
SETRANGE key 0 value           # 替换子串

哈希操作

# 设置哈希字段
HSET hashkey field value
HMSET hashkey field1 value1 field2 value2

# 获取哈希字段
HGET hashkey field
HMGET hashkey field1 field2
HGETALL hashkey                 # 获取所有字段和值
HKEYS hashkey                   # 获取所有字段名
HVALS hashkey                   # 获取所有值
HLEN hashkey                    # 获取字段数量

# 检查字段存在
HEXISTS hashkey field

# 删除字段
HDEL hashkey field

# 仅当字段不存在时设置
HSETNX hashkey field value

# 数值递增
HINCRBY hashkey field 1
HINCRBYFLOAT hashkey field 2.5

列表操作

# 左推入
LPUSH list value1 value2
LPUSHX list value              # 仅当列表存在时推入

# 右推入
RPUSH list value1 value2
RPUSHX list value

# 左弹出
LPOP list
BLPOP list 5                   # 阻塞弹出(5秒超时)

# 右弹出
RPOP list
BRPOP list 5

# 获取列表元素
LINDEX list 0                  # 获取索引位置的元素
LRANGE list 0 -1               # 获取所有元素
LLEN list                      # 获取长度

# 删除元素
LREM list 2 value              # 删除2个等于value的元素
LTRIM list 0 999               # 只保留指定范围

# 移动元素
RPOPLPUSH src dest             # 从src右弹出,推入dest左侧

集合操作

# 添加元素
SADD set member1 member2

# 获取集合所有元素
SMEMBERS set

# 检查元素是否存在
SISMEMBER set member

# 移除元素
SREM set member1 member2

# 获取集合大小
SCARD set

# 随机弹出元素
SPOP set
SRANDMEMBER set               # 随机获取元素(不删除)

# 集合运算
SINTER set1 set2              # 交集
SUNION set1 set2              # 并集
SDIFF set1 set2               # 差集
SINTERSTORE dest set1 set2    # 交集存入 dest

有序集合操作

# 添加元素
ZADD zset 1 member1 2 member2

# 获取分数
ZSCORE zset member

# 获取排名
ZRANK zset member             # 从低到高排名
ZREVRANK zset member          # 从高到低排名

# 获取范围元素
ZRANGE zset 0 -1              # 按排名获取
ZRANGE zset 0 -1 WITHSCORES
ZREVRANGE zset 0 -1
ZRANGEBYSCORE zset 0 100      # 按分数获取

# 删除元素
ZREM zset member

# 增加分数
ZINCRBY zset 5 member

# 获取集合大小
ZCARD zset
ZCOUNT zset 0 100             # 指定分数范围内的数量

键管理

# 查看所有键
KEYS *
KEYS pattern:*
SCAN 0 MATCH pattern:* COUNT 100  # 扫描遍历

# 检查键存在
EXISTS key                    # 返回 1 或 0

# 删除键
DEL key1 key2
UNLINK key                    # 异步删除

# 设置过期
EXPIRE key 3600               # 3600秒后过期
EXPIREAT key 1609459200       # Unix 时间戳过期
PEXPIRE key 3600000           # 毫秒过期
PERSIST key                   # 移除过期时间

# 查看剩余时间
TTL key                       # 返回秒
PTTL key                      # 返回毫秒

# 查看键类型
TYPE key

# 重命名
RENAME key newkey
RENAMENX key newkey           # 仅当新键不存在时重命名

数据库管理

# 切换数据库
SELECT 0
SELECT 1

# 查看键数量
DBSIZE

# 清空当前数据库
FLUSHDB
FLUSHDB ASYNC                 # 异步清空

# 清空所有数据库
FLUSHALL
FLUSHALL ASYNC

# 查看数据库信息
INFO keyspace

服务器信息

# 查看服务器信息
INFO
INFO memory
INFO replication
INFO cpu
INFO keyspace

# 查看统计
INFO stats

# 实时监控命令
MONITOR

# 查看慢查询日志
SLOWLOG GET
SLOWLOG GET 10
SLOWLOG LEN

# 查看客户端列表
CLIENT LIST
CLIENT KILL ip:port

# 查看配置
CONFIG GET *
CONFIG GET maxmemory
CONFIG SET maxmemory 1gb

# 保存 RDB 快照
SAVE                         # 同步保存
BGSAVE                       # 后台保存
LASTSAVE                     # 上次保存时间

# 加载 RDB 文件
# 在启动时指定 RDB 文件即可自动加载

复制与集群

# 复制相关
INFO replication              # 查看复制状态
SLAVEOF host port            # 设置主从(旧版)
REPLICAOF host port          # 设置主从(新版)
SLAVEOF NO ONE               # 取消复制

# 集群相关
CLUSTER INFO                 # 集群信息
CLUSTER NODES                # 节点信息
CLUSTER MEET ip port         # 添加节点
CLUSTER FORGET node-id       # 移除节点
CLUSTER REPLICAOF node-id    # 设置从节点

发布订阅

# 订阅频道
SUBSCRIBE channel
PSUBSCRIBE pattern*          # 模式订阅
UNSUBSCRIBE channel

# 发布消息
PUBLISH channel message

事务

# 开启事务
MULTI
SET key1 value1
SET key2 value2
EXEC                         # 执行事务
DISCARD                      # 取消事务

# 监视键(乐观锁)
WATCH key1 key2
MULTI
...
EXEC
UNWATCH                      # 取消监视

实用技巧

# 查找大键
redis-cli --bigkeys

# 实时统计
redis-cli --stat

# 延迟检测
redis-cli --latency

# 管道批量导入
cat commands.txt | redis-cli --pipe

# 备份数据库
redis-cli --rdb backup.rdb

# 导出所有键
redis-cli KEYS '*' > keys.txt

# 批量删除键
redis-cli KEYS 'prefix:*' | xargs redis-cli DEL