当前位置:

首页 > 编程开发 > 如何有效地管理Redis?

如何有效地管理Redis?

Redis Assistant
Redis Assistant

Redis Assistant 是一款为Redis设计的高效可视化管理与监控工具,提供多种操作模式,高效处理服务器数据。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

立即下载
¥19
Windows/macOS/Linux 2026-08-22
正版软件 Windows macOS软件 Linux 数据库管理工具

一、安全谈到安全,我们会联想到些什么?比如,可信任的环境会给我们带来安全感,陌生的环境则会让你感到未知的恐惧和孤独。再比如,国产化替代信创项目(安可替代),这里我简称为国创项目,就是要达到信任、安全可靠以及自主可控的的目的。上面谈了这么多(瞎扯了很多,我黔驴尽穷了),只是为了提升我们的安全意识。Redis以简洁为美,创始人曾这么描述过。但同样在安全层面也没做过多的工作。这里补充一点,上次没有讲到如何优雅的关闭Redis服务。虽然可以杀掉进程来控制,但推荐使用如下方式关闭:$/opt/redis-6.0.8

本文目录

    如何有效地管理Redis?

    一、安全

    谈到安全,我们会联想到些什么?
    比如,可信任的环境会给我们带来安全感,陌生的环境则会让你感到未知的恐惧和孤独。
    再比如,国产化替代信创项目(安可替代),这里我简称为国创项目,就是要达到信任、安全可靠以及自主可控的的目的。

    上面谈了这么多(瞎扯了很多,我黔驴尽穷了),只是为了提升我们的安全意识。

    Redis以简洁为美,创始人曾这么描述过。但同样在安全层面也没做过多的工作。

    这里补充一点,上次没有讲到如何优雅的关闭Redis服务。虽然可以杀掉进程来控制,但推荐使用如下方式关闭:

    $ /opt/redis-6.0.8/src/redis-cli shutdown

    1、可信环境

    Redis的安全设计是基于“Redis运行在可信任的环境”这个前提下做出来的。在生产环境(正式发布环境)运行时,不允许外部直接连接到Redis服务器上,此时应该通过应用程序进行中转,运行在可信任的环境中是保证Redis安全至关重要的方法。

    1.1、bind参数

    在Redis的默认配置文件redis.conf中,只会接受本地的网络请求。但通过在配置文件中修改bind参数更改这一设置,默认的bind设置为:

    如何有效地管理Redis?

    bind:127.0.0.1

    bind参数同样可以绑定多个IP地址,IP地址以间隔空格分隔,如下示例:

    如何有效地管理Redis?

    # Examples:# bind 192.168.1.100 10.0.0.1# bind 127.0.0.1 ::1
    1.2、protected-mode参数

    在Redis3.2的版本中,引入了一个特殊模式:保护模式,来更好地确保Redis运行在可信环境之中。值得注意的是,保护模式在默认情况下是开启的。

    参数设置:

    #开启保护模式protected-mode yes#禁止保护模式protected-mode no

    如何有效地管理Redis?

    作用:

    • 开启保护模式:接收到来自不在bind绑定的网络客户端发送命令时,如果客户端没有设置密码,Redis会返回错误拒绝(DENIED)执行该命令。

    • 禁止保护模式:可以在配置中使用protected-mode no禁止。

    • 安全:对于生产环境需要确保开启了护盾(防火墙),达到确保可信客户端连接服务器的目的。

    在测试的时候,比如我在Windows下连接我的linux上的Redis服务。为了方便测试,此时临时关闭防护墙firewalld,或者采用firewall-cmd命令加入6379默认端口以及Redis服务,关于防火墙的知识可以参考我之前的文章《firewalld与iptables防火墙工具》:

    #临时关闭防火墙systemctl stop firewalld.service

    注意:Redis3.2之前的版本默认会绑定所有网络接口,任何网络上的计算机(包含公网)都可连接至Redis服务器上。使用旧版的需要注意,最好修改这个参数,或者升级到新版。

    2、数据库密码

    Redis中提供了数据库密码功能。最开始我傻傻的以为直接就能连上,岂不是没有密码,真不安全。直到后来在工作的实践中,才发现原来这货可以是设置密码的,只是我以前并不知道而已。值得注意的是:并且在6.0版本中支持多用户权限控制功能。

    2.1、Redis密码设置

    在我的上一篇文章也有提到过。Redis数据库密码是通过参数requirepass来控制的,默认的6.0.8版本是禁用掉了,需要手动开启。

    如何有效地管理Redis?

    #默认禁用掉了#requirepass foobared#启用密码requirepass 123456

    客户端每次连接到Redis时都需要发送密码,否则Redis会拒绝执行客户端发来的命令。例如我使用Windows客户端连接:
    开启了保护模式,开始提示DENIED。利用bind绑定了信任的ip或者禁止保护模式,最后还会提示密码为验证。

    如何有效地管理Redis?

    示例:设置键sky,set “sky” “hello redis”

    #设置skyset "sky" "hello redis"

    重启redis服务(需要读取到redis.conf文件),会提示验证密码,如下图所示。

    如何有效地管理Redis?

    #获取skyget sky(error) NOAUTH Authentication required. 
    #提示需要密码认证
    #认证auth 123456
    #再次获取skyget sky"hello redis"

    虽然数据库设置密码很方便,但是在复杂的场景中经常需要使用更加细粒度的访问权限控制。比如:

    • 生产环境中的应用程序下不应该具有执行CONFIG、FLUSHALL涉及到管理或者数据安全的命令权限

    • 多个程序因不同用途共用一个Redis服务时,建议限制某个程序访问其它程序产生的键。

    tips:为此,Redis6.0推出了访问控制列表(ACL)功能,可以支持多用户,并且设置每个用户可以使用的命令和访问的键名规则等。可以通过配置文件设置,如下:

    • 将ACL配置直接写在Redis配置文件中

    • 将ACL配置写在单独的文件中,然后在Redis配置文件通过aclfile指令引入,例如:

    aclifile /opt/person/conf.acl
    2.1、Redis主从复制注意事项

    在配置Redis复制的时候,如果主库设置了密码,需要在从库的配置文件中通过masterauth 参数设置主库的密码,使从库连接主库时自动使用auth命令验证,配置如下。

    如何有效地管理Redis?

    masterauth 

    3、命名命令

    Redis支持在配置文件中将命令重命名,例如将FLUSHALL命令重命名为一个比较复杂的名字,达到保证只有自己的应用可以使用该命令。当然,这个功能可以看做在6.0版本之前没有ACL,作为对命令安全性的一个补充。如下配置:

    rename-command FLUSHALL redisabcdsky1r2d3is

    如果希望直接一点,直接禁用,通过重命名为空字符

    rename-command FLUSHALL ""

    再次强调:安全起见,无论设置密码还是重命名命令,都应遵循保证配置文件的安全性,否则就无意义了。

    二、通信协议

    之前有了解到Redis的主从复制以及持久化AOF文件的格式,通过了解Redis通信协议能更好的理解Redis。

    当然Redis支持两种通信协议。如下:

    • 一种是二进制安全的统一请求协议(unified request protocol)

    • 第二种是比较直观的便于在telnet程序中输入的简单协议

    1、简单协议

    简单协议适合在telnet程序中和Redis通信。如下是通过telnet测试与Redis通信:

    linux下Redhat系列安装telnet通过yum命令:

    yum -y install telnet

    Windows在启用或关闭Windows功能中启用telnet

    [root@dywangk redis-6.0.8]# telnet 127.0.0.1 6379Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.auth 123456 #同样需要验证密码,之前设置了密码+OKset foo bar 
    +OK
    get foo$3bar#输入quit退出telnet
    1.1、错误回复

    错误回复(error reply)以 - 开头并在后面跟着错误信息:

    -ERR unknown command ``, with args beginning with:
    1.2、状态回复

    状态回复(status reply)以+开头

    +OK
    1.3、整数回复

    整数回复(integer reply)以:开头

    :3
    1.4、字符串回复

    字符串(bulk reply)回复以$开头

    $3

    2、统一请求协议

    统一请求协议是从Redis1.2开始加入的,其命令格式与多行字符串回复格式类似。也以telnet为例演示:

    [root@dywangk redis-6.0.8]# telnet 127.0.0.1 6379Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.auth 123456 #同样需要验证密码,之前设置了密码+OK
    *3$3set$3foo$3bar  
    +OK#输入quit退出telnet

    同样,在发送命令的时候指定了后面字符串的长度,所以每个命令的每个参数都可以包含二进制的字符。

    Redis的AOF文件和主从复制时数据库发送的内容使用了统一请求协议。如果简单的使用telnet与Redis进行通信,使用简单协议即可。

    三、管理工具

    1、redis-cli

    看到redis-cli大家肯定不陌生,是的我们学习测试快速融入都是使用的redis-cli命令进行的,Redis自带的客户端。Redis可以执行大部分的Redis命令,包括查看数据库信息的info命令、更改数据库设置的config命令和强制进行RDB快照的save命令。简单介绍几个管理Redis常用的命令。

    1.1、耗时命令日志

    当一条命令执行时间超过限制时,Redis会将该命令的执行时间等信息加入耗时命令日志(slow log)以供开发者查看。通过配置文件的slowlog-log-slower-than 10000参数设置限制,注意单位是微秒,可以看到默认为10000。通过slowlog-max-len 128限制记录的条数。

    获取当前耗时命令日志

    slowlog get

    每条日志由以下4个部分组成

    • 唯一日志ID

    • 执行的Unix时间

    • 耗时时间,单位为微秒

    • 命令及其参数

    测试时,将slowlog-log-slower-than 0 参数设置为0

    slowlog-log-slower-than 0
    1.2、命令监控

    Redis提供了monitor来监控Redis执行的所有命令,redis-cli也支持。例如:

    monitor

    注意:一般用于调试和纠错使用。

    2、Medis

    如何有效地管理Redis?

    当Redis中的键比较多时,此时使用redis-cli管理略显不足。Medis是一款macOS下的可视化Redis管理工具。通过界面即可实现管理Redis。

    3、phpRedisAdmin

    看到phpRedisAdmin,大家也许会联想到以网页形式管理MySQL的phpMyAdmin管理工具。

    关于工具的使用,可以参考github说明,这里不做过多介绍。

    建议:github那访问速度大家都懂的,建议导入到gitee作为镜像仓库使用,每隔一段时间同步。

    4、Rdbtools

    一款采用Python语言开发的Redis的快照文件解析器,它可以根据快照文件导出json数据文件、分析Redis中每个键的占用空间情况。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    php72w redis,docker php7安装php-redis
    php72w redis,docker php7安装php-redis

    在Docker环境下为PHP安装Redis扩展:手动编译需下载源码、安装phpize、配置编译并安装,生成redis.so并在php.d目录新建redis.ini加载,重启PHP-FPM;也可直接yum安装php72w-pecl-redis,免手动编译。

    php 如何配置 redis,php 如何设置redis
    php 如何配置 redis,php 如何设置redis

    配置PHP的Redis扩展:先安装Redis服务,从GitHub下载phpredis源码,用phpize编译安装,修改php.ini添加extension=redis.so,重启php-fpm或Apache,通过phpinfo验证并连接Redis。

    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】
    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】

    C++结构体无法直接序列化为RESP协议,需手动将字段映射为*N数组嵌套$lenbulkstring形式。整数需转换为字符串并加:前缀,空字符串用$0\r\n,null用$-1\r\n。长度计算需精确到字节数,特别注意二进制安全,同时确保字段顺序与结构体定义一致。

    如何在Golang架构中部署Redict作为高能数据临时存储中转站
    如何在Golang架构中部署Redict作为高能数据临时存储中转站

    Redis作为跨服务临时状态枢纽,需按消息队列、缓存和原子状态三重角色设计。选型用List实现任务分发及延迟重试,Stream用于事件广播与位点回溯。go-redis/v8需配置MinIdleConns、MaxRetries及超时。数据写入应JSON序列化并带type标签、设合理TTL、将关键字段提至顶层。消费通过原子GET+DEL或processedkey

    TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制
    TP8.0 高并发下库存超卖?Redis 原子递减结合数据库乐观锁控制

    在高并发秒杀场景下,利用Redis的减库存原子操作预扣减库存拦截超卖请求,再通过数据库乐观锁(版本号与库存校验)确保最终一致性,异常时回滚Redis库存并借助Lua脚本保证原子性,从而有效防止库存超卖。

    如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑
    如何在 Go 中利用 go-redis 执行 Lua 脚本优化逻辑

    在Go中使用go-redis执行Lua脚本可借助原子性解决竞态问题,通过redis.Script封装脚本并自动处理SHA1缓存与重试。需注意KEYS必须为非空切片且所有键在Cluster模式下落在同一slot,ARGV以字符串传入并由tonumber转换。返回值需先检查错误再调用Val(),避免panic。

    TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】
    TP6.0 基于 Redis SetNX 实现的简单互斥锁机制【并发】

    先看一个典型场景:电商秒杀、库存扣减、定时任务重复调度——这些并发冲突在 TP6 应用里屡见不鲜。用 Redis 的 SETNX 做互斥锁,确实是轻量又直接的方案,但“能用”和“稳妥”之间,隔着三层硬功夫:原子加锁、身份校验、合理超时。这三条,差一条就翻车。 很多人第一次上手,直接写 SETNX 加

    TP6.0 如何处理高并发抢购?Redis 原子锁与队列削峰详解【秒杀】
    TP6.0 如何处理高并发抢购?Redis 原子锁与队列削峰详解【秒杀】

    高并发抢购中,Redis的DECR原子操作可安全扣库存;配合think-queue异步削峰,接口仅扣库存和推消息;分布式锁需用SETNXEX加唯一标识,释放时用Lua脚本校验;成功资格后须以数据库事务双写为准,失败时补回Redis库存。

    Golang 实现基于 Redis 的延时任务队列
    Golang 实现基于 Redis 的延时任务队列

    基于Redis的ZSET实现延时队列需解决并发重复消费、失败重试混乱、精度不足及内存爆炸等问题。通过Lua脚本保证取删原子性,使用毫秒级时间戳,对临时错误采用指数退避重试,永久错误记入独立哈希表,并限制最大延迟、定期清理过期任务、使用紧凑序列化格式。

    RedisInsight怎么修改Key的过期时间 Redis操作方法【步骤】
    RedisInsight怎么修改Key的过期时间 Redis操作方法【步骤】

    操作 Redis 的时候,改个 Key 的过期时间其实是个高频场景。特别是做运维排查或者临时调试那会儿,谁也不想反复切命令行窗口、背那些命令参数。好在 RedisInsight 这个图形工具把这事儿做得很顺手——三种方式任选,总有一种合你胃口。 在动手前,先确认一下 Key 当前的 TTL 状态是个

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?