redis禁用keys、flushdb、flushall等命令

redis禁用keys、flushdb、flushall等命令

文档

  1. redis单机安装
  2. redis集群模式 -集群搭建
  3. redis大key问题-生成大key-生成100万条测试数据
  4. redis惰性删除与异步删除

官方文档

  1. 官网操作命令指南页面:https://redis.io/docs/latest/commands/?name=get&group=string
  2. Redis cluster specification

下载地址

  1. 官网:https://redis.io/
  2. 下载列表页面:https://download.redis.io/releases/

说明

  1. 版本选择:redis-7.0.0.tar.gz
  2. 下载地址:https://download.redis.io/releases/redis-7.0.0.tar.gz

redis禁用keys、flushdb、flushall等命令

安装redis
  1. 以单机版redis为例,安装redis参考文档:redis单机安装
keys、flushdb、flushall等命令的危害
  1. keys *会扫描所有key,如果有较多的key,可能会发生阻塞
  2. flushdb会删除当前数据库中的所有key
  3. flushall会删除所有数据库中的所有key
keys命令的替代方案
  1. keys *命令是获取所有key,可以用scan命令分批获取key,减少单次阻塞时间

  2. scan命令,https://redis.io/docs/latest/commands/SCAN/

    shell 复制代码
    SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
禁用keys、flushdb、flushall等命令
  1. redis.conf中,找到SECURITY相关的配置,找到命令重命名相关的说明

  2. 官方文档

    conf 复制代码
    ################################## SECURITY ###################################
    
    # 还有其它说明
    
    # Command renaming (DEPRECATED).
    #
    # ------------------------------------------------------------------------
    # WARNING: avoid using this option if possible. Instead use ACLs to remove
    # commands from the default user, and put them only in some admin user you
    # create for administrative purposes.
    # ------------------------------------------------------------------------
    #
    # It is possible to change the name of dangerous commands in a shared
    # environment. For instance the CONFIG command may be renamed into something
    # hard to guess so that it will still be available for internal-use tools
    # but not available for general clients.
    #
    # Example:
    #
    # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
    #
    # It is also possible to completely kill a command by renaming it into
    # an empty string:
    #
    # rename-command CONFIG ""
    #
    # Please note that changing the name of commands that are logged into the
    # AOF file or transmitted to replicas may cause problems.
  3. 中文翻译

    conf 复制代码
    ################################## SECURITY ###################################
    
    # 命令重命名(已弃用)。
    #
    # ------------------------------------------------------------------------
    # 警告:如有可能,请避免使用此选项。建议使用 ACL 从默认用户中移除命令,
    # 并将这些命令仅放在为管理目的创建的某个管理员用户中。
    # ------------------------------------------------------------------------
    #
    # 在共享环境中可以更改危险命令的名称。例如,可以将 CONFIG 命令重命名为
    # 难以猜测的名称,这样它仍然可供内部工具使用,但不会对普通客户端开放。
    #
    # 示例:
    #
    # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
    #
    # 也可以通过将命令重命名为空字符串来完全禁用该命令:
    #
    # rename-command CONFIG ""
    #
    # 请注意,更改记录到 AOF 文件或传输到副本的命令名称可能会导致问题。
  4. 文档中已说明,命令重命名的方式已弃用。这里还是采用命令重命名的方式来禁用keys、flushdb、flushall等命令

  5. 推荐配置

    conf 复制代码
    rename-command KEYS ""
    rename-command FLUSHDB ""
    rename-command FLUSHALL ""
  6. 客户端使用keys、flushdb、flushall等命令时,将提示不可用

    shell 复制代码
    127.0.0.1:6379> keys *
    (error) ERR unknown command 'keys', with args beginning with: '*' 
    127.0.0.1:6379> flushdb
    (error) ERR unknown command 'flushdb', with args beginning with: 
    127.0.0.1:6379> flushall
    (error) ERR unknown command 'flushall', with args beginning with:
  7. 如果aof文件中包含相关命令,可能会报错导致服务启动失败

    1. 查看日志报错信息

      verilog 复制代码
      Unknown command 'flushdb' reading the append only file appendonly.aof.1.incr.aof
    2. 解决方法:将aof中相关的命令删除就可以启动服务了。生产环境这样操作可能会有风险

参考资料

  1. https://www.bilibili.com/video/BV13R4y1v7sP

注意事项

  1. 部分内容由AI生成
  2. 如有不对,欢迎指正!!!
相关推荐
h***34631 小时前
docker desktop安装redis
redis·docker·容器
U***l8322 小时前
Spring Boot 整合 Redis 步骤详解
spring boot·redis·bootstrap
e***87702 小时前
Redis四种模式在Spring Boot框架下的配置
spring boot·redis·bootstrap
zs宝来了2 小时前
Redis的String 底层实现
数据库·redis·缓存
旷野说2 小时前
用 Redis + Lua 守住打赏原子性:我在单体系统中的微观实践(续)
redis·junit·lua
永不停歇的蜗牛3 小时前
解决方法:在本地电脑安装的Centos虚拟机上启动redis服务,使用本地电脑客户端无法连接到redis。
linux·redis·centos
z***56563 小时前
GO 快速升级Go版本
开发语言·redis·golang
D***y2013 小时前
Redis服务安装自启动(Windows版)
数据库·windows·redis
k***82513 小时前
Redis-配置文件
数据库·redis·oracle