Redis 命令
操作命令 键 字符串 哈希 列表 集合 有序集合 连接管理 事务 发布/订阅 服务器管理 持久化 集群 脚本 备份和恢复 --- 批量删除某个开头的 key 1. keys "milvus:*" 会返…
操作命令
键
1set <key> <value> # 设置键值
2get <key> # 获取键的值
3del <key> # 删除键
4exists <key> # 检查键是否存在
5expire <key> <seconds> # 设置键的过期时间(秒)
6ttl <key> # 查看键的剩余过期时间
7type <key> # 查看键的类型
8rename <oldkey> <newkey> # 重命名键
9persist <key> # 移除键的过期时间
10keys <pattern> # 查找匹配模式的键
11randomkey # 随机返回一个键
12scan <cursor> [match pattern] [count N] # 增量迭代键
字符串
1set <key> <value> # 设置键的字符串值
2get <key> # 获取字符串值
3incr <key> # 将键的值加1
4decr <key> # 将键的值减1
5append <key> <value> # 追加字符串到键
6strlen <key> # 返回字符串值的长度
7mset <key1> <value1> <key2> <value2> # 批量设置多个键值
8mget <key1> <key2> # 批量获取多个键的值
哈希
1hset <key> <field> <value> # 设置哈希表字段的值
2hget <key> <field> # 获取哈希表字段的值
3hdel <key> <field1> <field2> # 删除哈希表中的字段
4hgetall <key> # 获取哈希表中的所有字段和值
5hincrby <key> <field> <increment> # 为哈希表中的字段值加上增量
6hmset <key> <field1> <value1> ... # 设置多个字段的值
7hmget <key> <field1> <field2> ... # 获取多个字段的值
8hlen <key> # 获取哈希表中的字段数量
列表
1lpush <key> <value1> <value2> # 将一个或多个值插入列表头部
2rpush <key> <value1> <value2> # 将一个或多个值插入列表尾部
3lpop <key> # 移除并返回列表的头元素
4rpop <key> # 移除并返回列表的尾元素
5lrange <key> <start> <stop> # 获取列表指定范围内的元素
6llen <key> # 获取列表长度
7lset <key> <index> <value> # 将列表中指定位置的元素设置为新值
8lindex <key> <index> # 获取列表中指定位置的元素
集合
1sadd <key> <member1> <member2> # 向集合添加一个或多个成员
2srem <key> <member1> <member2> # 移除集合中的一个或多个成员
3smembers <key> # 获取集合中的所有成员
4sismember <key> <member> # 判断成员是否在集合中
5scard <key> # 获取集合中的成员数量
6spop <key> # 移除并返回集合中的一个随机成员
7srandmember <key> [count] # 随机返回集合中的一个或多个成员
有序集合
1zadd <key> <score1> <member1> ... # 向有序集合添加一个或多个成员,或更新成员的分数
2zrem <key> <member1> <member2> # 移除有序集合中的一个或多个成员
3zrange <key> <start> <stop> [withscores] # 获取有序集合指定范围内的成员
4zrank <key> <member> # 获取成员在有序集合中的排名(按分数升序)
5zincrby <key> <increment> <member> # 为有序集合中的成员加上增量
6zcard <key> # 获取有序集合的成员数量
7zcount <key> <min> <max> # 计算指定分数范围内的成员数量
连接管理
1auth <password> # 认证密码
2ping # 测试连接是否可用
3select <index> # 切换到指定数据库
4echo <message> # 打印消息
5quit # 退出 redis 连接
事务
1multi # 开始一个事务块
2exec # 执行事务块中的所有命令
3discard # 取消事务块
4watch <key1> <key2> # 监视一个或多个键
5unwatch # 取消监视所有键
发布/订阅
1PUBLISH <channel> <message> # 发布消息到频道
2SUBSCRIBE <channel1> <channel2> # 订阅一个或多个频道
3UNSUBSCRIBE [channel1 channel2] # 取消订阅一个或多个频道
4PSUBSCRIBE <pattern1> <pattern2> # 订阅与模式匹配的所有频道
5PUNSUBSCRIBE [pattern1 pattern2] # 取消订阅与模式匹配的所有频道
6PUBSUB CHANNELS [pattern] # 列出活跃的频道
7PUBSUB NUMSUB <channel1> <channel2> # 查看每个频道的订阅者数量
服务器管理
1info # 获取 redis 服务器的统计信息
2config get <parameter> # 获取 redis 配置参数
3config set <parameter> <value> # 设置 redis 配置参数
4monitor # 实时输出 redis 接收到的所有命令
5slowlog <subcommand> [argument] # 查看 redis 慢查询日志
6dbsize # 返回当前数据库的键数量
7flushdb # 清空当前数据库中的所有键
8flushall # 清空所有数据库中的所有键
9save # 同步保存数据到磁盘
10bgsave # 异步后台保存数据到磁盘
11lastsave # 返回最后一次成功保存到磁盘的时间戳
12shutdown [save|nosave] # 关闭 redis 服务器
13debug object <key> # 查看键的底层数据结构信息
14debug segfault # 使服务器崩溃(测试用)
15client list # 显示所有连接到服务器的客户端
16client kill <ip:port> # 关闭指定客户端的连接
持久化
1save # 同步将数据保存到磁盘
2bgsave # 异步将数据保存到磁盘
3bgrewriteaof # 重写 aof 文件
4lastsave # 获取最后一次成功保存的时间戳
集群
1cluster info # 显示集群的状态
2cluster nodes # 显示集群节点信息
3cluster meet <ip> <port> # 将节点加入集群
4cluster forget <node_id> # 从集群中移除节点
5cluster replicate <node_id> # 将当前节点设置为指定节点的副本
6cluster failover # 主从故障转移
7cluster slots # 查看集群槽位分配信息
脚本
1eval <script> <numkeys> <key1> <key2> ... <arg1> <arg2> ... # 执行 lua 脚本
2script load <script> # 将 lua 脚本加载到缓存但不执行
3script flush # 清空所有 lua 脚本缓存
4script kill # 杀死正在运行的 lua 脚本
5evalsha <sha1> <numkeys> <key1> <key2> ... <arg1> <arg2> ... # 通过 sha1 校验执行脚本
备份和恢复
1dump <key> # 序列化给定键
2restore <key> <ttl> <serialized_value> # 反序列化数据到 redis,并设置键的 ttl
3migrate <host> <port> <key> <dest_db> <timeout> # 将键从当前实例迁移到指定的
批量删除某个开头的 key
1redis-cli keys "milvus:*" | xargs redis-cli del
keys "milvus:*"会返回所有匹配milvus:前缀的键。xargs会将返回的键值列表逐个传递给redis-cli del命令,最终实现批量删除。
keys 命令在大型数据库上可能会很慢并阻塞 Redis,因为它会扫描整个数据库。 如果你担心 keys 命令的性能问题,可以考虑使用 Redis 的 SCAN 命令逐步扫描并删除键值。
1redis-cli --scan --pattern "milvus:*" | xargs redis-cli del
这个命令会以非阻塞的方式逐步扫描所有以 milvus: 开头的键,并将其删除。
数据备份迁移
停 Redis → 替换 dump.rdb → 启 Redis
步骤一:查看 Redis 配置文件中的 **dir** 路径
你需要先找出 dump.rdb 的保存位置。
如果有密码则输入 redis-cli -a <password> CONFIG GET dir
查看当前配置路径:
1redis-cli CONFIG GET dir
示例输出:
11) "dir"
22) "/var/lib/redis"
还可以查看快照文件名:
1redis-cli CONFIG GET dbfilename
示例输出:
11) "dbfilename"
22) "dump.rdb"
即:你的数据快照文件是 /var/lib/redis/dump.rdb
步骤二:手动触发保存 RDB 文件(推荐)
1redis-cli SAVE
或使用异步方式:
1redis-cli BGSAVE
执行后,会在指定目录生成或覆盖 dump.rdb 文件。
步骤三:备份 **dump.rdb** 文件
直接使用 cp 命令复制:
例如:
1sudo cp /var/lib/redis/dump.rdb ~/redis_backups/dump_2025-05-15.rdb
恢复 Redis 数据(从备份还原)
恢复方式也很简单:
- 停止 Redis 服务:
1sudo systemctl stop redis
- 将备份文件复制回来并命名为
dump.rdb:
1sudo cp ~/redis_backups/dump_2025-05-15.rdb /var/lib/redis/dump.rdb
- 设置权限(确保 Redis 有访问权限):
1sudo chown redis:redis /var/lib/redis/dump.rdb
- 启动 Redis:
1sudo systemctl start redis
Redis 启动时会自动加载 dump.rdb 文件的数据。
开启 AOF 追加日志持久化
如果你对数据完整性要求更高(例如每条写入操作都不能丢),可以开启 AOF 模式:
- 修改配置文件
/etc/redis/redis.conf:
1appendonly yes
- 重启 Redis:
1sudo systemctl restart redis
AOF 文件路径默认为 appendonly.aof,也可以定期备份。
Redis 放通 0.0.0.0 监听
默认情况下,Redis 仅监听 127.0.0.1(本地回环地址)
- 修改 Redis 配置文件
Redis 的配置文件通常位于 /etc/redis/redis.conf 或 /usr/local/etc/redis.conf,具体路径取决于你的安装方式。
1bind 127.0.0.1 -> bind 0.0.0.0
- 如果注释掉
bind行,Redis 默认会监听所有接口,但这可能不够显式,建议明确设置。
- 禁用保护模式(可选)
Redis 默认启用了 保护模式(protected-mode),当 Redis 监听非本地地址时,如果没有设置密码,Redis 会拒绝外部连接。
1protected-mode yes -> protected-mode no
- 设置密码认证
1# requirepass foobared
2requirepass your-strong-password
- 重启 Redis 服务
1sudo systemctl restart redis
- 检查 Redis 是否监听 0.0.0.0
1netstat -tuln | grep 6379
输出应类似于:
1tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN