‹ 返回笔记 Esc·

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
  1. keys "milvus:*" 会返回所有匹配 milvus: 前缀的键。
  2. 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 数据(从备份还原)

恢复方式也很简单:

  1. 停止 Redis 服务:
1sudo systemctl stop redis
  1. 将备份文件复制回来并命名为 dump.rdb
1sudo cp ~/redis_backups/dump_2025-05-15.rdb /var/lib/redis/dump.rdb
  1. 设置权限(确保 Redis 有访问权限):
1sudo chown redis:redis /var/lib/redis/dump.rdb
  1. 启动 Redis:
1sudo systemctl start redis

Redis 启动时会自动加载 dump.rdb 文件的数据。


开启 AOF 追加日志持久化

如果你对数据完整性要求更高(例如每条写入操作都不能丢),可以开启 AOF 模式:

  1. 修改配置文件 /etc/redis/redis.conf
1appendonly yes
  1. 重启 Redis:
1sudo systemctl restart redis

AOF 文件路径默认为 appendonly.aof,也可以定期备份。


Redis 放通 0.0.0.0 监听

默认情况下,Redis 仅监听 127.0.0.1(本地回环地址)

  1. 修改 Redis 配置文件

Redis 的配置文件通常位于 /etc/redis/redis.conf/usr/local/etc/redis.conf,具体路径取决于你的安装方式。

1bind 127.0.0.1    ->     bind 0.0.0.0
  • 如果注释掉 bind 行,Redis 默认会监听所有接口,但这可能不够显式,建议明确设置。
  1. 禁用保护模式(可选)

Redis 默认启用了 保护模式protected-mode),当 Redis 监听非本地地址时,如果没有设置密码,Redis 会拒绝外部连接。

1protected-mode yes    -> protected-mode no
  1. 设置密码认证
1# requirepass foobared
2requirepass your-strong-password
  1. 重启 Redis 服务
1sudo systemctl restart redis
  1. 检查 Redis 是否监听 0.0.0.0
1netstat -tuln | grep 6379

输出应类似于:

1tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN