在 <一个 C++ redis 集群管理工具> 中主要讲述了如何使用 redis_builder 工具创建 redis 集群的过程,除此之外,该工具还具有更为强大的 redis 客户端管理功能(相对于官方提供的 redis-cli功能要强大的多)。本文主要讲解使用 redis_builder 以交互方式管理 redis 集群的过程。
一、启动 redis_builder 的交互过程
只要运行:./redis_builder -s redis_ip:redis_port,便进入 redis_builder 工具的命令行交互过程,其中 redis_ip 和 redis_port 为 redis 集群中的任一个节点的 IP 及端口号。启动成功后,显示界面如下:
在上图中,首先显示了针对一些 redis 客户端命令的:是否采用广播方式,命令执行权限。
“广播方式”的含义是:该命令需要向 redis 集群中的所有节点发送某个 redis 客户端命令,有的命令向所有主从节点广播,有的命令仅向所有主节点广播。对于象 config xxx xxx (如:config get save)类的命令,是需要向所有主从节点广播以获得所有节点的配置信息;对于象 dbsize 命令,则需要向所有主节点广播,以便获得整个集群总的键值数。
“执行权限”的用处是:1、防止误操作,2、禁止使用 redis_builder 执行某些非常危险的命令。其中“执行权限”的三个级别分别为:yes --- 允许执行,warn --- 警告执行,no --- 禁止执行。对于大部分命令,如:get, incr, dbsize 等命令的执行对于整个系统一般是无害的,所以不会有限制,而对于象 del 类的命令则带有一定危险性,管理员可以配置该命令(下面单独介绍如何配置命令的执行权限)的执行为“警告”方式,这样当运行此类命令时,redis_builder 会首先提示警告信息让管理员再次确认是否真的要执行,这样做的好处是可以在一定程度上防止管理员误操作。
二、配置 redis 客户端命令的执行权限
当以命令行交互方式启动 redis_builder 时,该工具首先会强制检查该工具所在目录下是否有 redis_commands.txt 文件(该文件里配置着一些 redis 客户端命令的执行权限及广播方式),如果存在,则加载命令配置信息,如果该文件不存在则尝试加载由 -F 指定的命令配置信息。之所以要强制加载 redis_commands.txt 命令配置文件,主要适应这样一种应用场景:由 root 超级管理员创建了 redis_commands.txt 文件(属主当然为 root),普通用户只有读的权限,这样 root 管理员在 redis_commands.txt 中设置的 redis 命令执行权限普通用户是不能修改的。
如果在 redis_builder 命令的相同目录下存在 redis_commands.txt 文件且内容如下:
则启动 redis_builder 交互方式后,则显示一些 redis 命令的执行权限如下(红圈内的命令为 redis_commands.txt 文件指定的):
如果在 redis_commands.txt 指定的 redis 命令与 redis_builder 内部缺省的命令相同,则执行 redis_commands.txt 中指定的 redis 命令权限。
三、redis_builder 在交互方式下的命令操作
在交互模式下,redis_builder 可以执行所有的 redis 客户端命令,其中,redis_builder 内置了一些针对某些重要命令的特殊执行过程,除了这些内置的 redis 客户端命令,其它的命令执行方式均为标准的 redis 协议命令格式(具体格式可参考:redis.io 或 redisdoc.com)。下面首先介绍 redis_builder 内置的一些 redis 命令,随便输入一些字符串回车后,显示内置的命令如下:
1、keys 命令:该命令根据字符串匹配模式 pattern 扫描 redis 集群中所有子节点(之所以扫描子节点,是为了减轻对主节点的访问压力,如果需要强制扫描主节点,则在启动 redis_builder 时增加参数 -M),获得符合匹配条件的所有键值,为了防止键太多造成刷屏问题,可以通过 limit 参数指定每个节点显示的条目数
2、get 命令:该命令可以获得五种数据类型(STRING, HASH, LIST, SET, ZSET)的值,内部会根据数据类型自动匹配查询,并根据类型的不同按不同的方式显示。示例如下:
由上图可以看到,对于 STRING 和 HASH 类型,get 命令会自行进行分别处理。此外,为了防止结果集太大造成刷屏,还可以通过指定参数 :limit 来限定显示的条目,如对于 HASH 类型的 hash_test_key_53479,可以这样查找:get :2 hash_test_key_53479,虽然有三个值,则最多只会显示两个,如下:
3、dbsize 命令:这是一个广播式式命令,会向所有主节点(当启动时指定参数 -M)或从所有主节点各挑选一个子节点发送 dbsize,获得整个 redis 集群中总的记录条数:
4、nodes 命令:该命令会发送给随意一个 redis 节点,获得当前 redis 集群的分布状态,显示如下:
该图以树型方式展示了整个 redis 集群中的主从分布情况,层次结构清晰,一目了然。
5、server 命令:该命令用于切换 redis 集群,管理员可以使用该命令随时切换至其它的 redis 的集群,从而方便管理员使用 redis_builder 命令同时管理多个 redis 集群。命令格式:server ip port
6、非 redis_builder 内置的其它 redis 命令:随了上面列出的一些内置命令外,管理员可以通过在命令行中输入任意合法的 redis 客户端命令,redis_builder 会将该命令发送至单个 redis 节点或广播(通过在 redis_commands.txt 指定广播方式)至所有的节点。比如:
图中的 set 及 hmset 命令均不是 redis_builder 内置的命令,但 redis_builder 依然可以按标准 redis 协议命令将请求发送至 redis 节点。
四、使用 redis_builder 实时显示当前 redis 集群的运行状态:
此外,redis_builder 还提供了以命令行方式实时显示当前 redis 集群的运行状态,显示如下:
五、编译 redis_builder
因为该工具依赖于 lib_acl/lib_protocol/lib_acl_cpp 三个 acl 基础库,所以需要首先编译这三个库:
$cd lib_acl; make
$cd lib_protocol; make
$cd lib_acl_cpp; make
然后再进入 app/redis_tools/redis_builder 编译:$cd app/redis_tools/redis_builder; make
六、参考
一个 C++ redis 集群管理工具 : http://zsxxsz.iteye.com/blog/2204006
redis_builder 工具下载:https://github.com/acl-dev/acl/tree/master/app/redis_tools/redis_builder
acl 中的 redis 模块例子:https://github.com/acl-dev/acl/tree/master/lib_acl_cpp/samples/redis
acl on github:https://github.com/acl-dev/acl
acl on sourceforge:https://sourceforge.net/projects/acl/
acl on oschina:http://git.oschina.net/acl-dev/acl
微博:http://weibo.com/zsxxsz/
QQ 群:242722074
相关推荐
1、redis_4.0.10-1_arm64.deb 银河麒麟v4+飞腾 安装包 2、自带服务启动 3、目录树 /opt/redis-4.0.10/ ├── bin │ ├── redis-benchmark │ ├── redis-check-aof │ ├── redis-check-rdb │ ├── ...
2016122201_Redis_初探_1.mp4 2016122201_Redis_初探_2.mp4 2016122201_Redis_初探_3.mp4 2016122202_Redis_安装_字符串键_1.mp4 2016122202_Redis_安装_字符串键_2.mp4...2016122302_Redis_集群_原生3.x集群模式_3.mp4
Redis_初探_1.mp4 Redis_初探_2.mp4 Redis_初探_3.mp4 Redis_安装_字符串键_1.mp4 Redis_安装_字符串键_2.mp4 Redis_安装_字符串键_3.mp4 Redis_字符串键_BitMap操作_1.mp4 ...Redis_集群_原生3.x集群模式_3.mp4
redis_client_拓展
安装redis_rate支持2个最新的Go版本,并且需要具有支持的Go版本。 因此,请确保初始化Go模块:go mod init github.com/my/repo 然后安装redis_rate / v9(在导入中注意v9 ;忽略它是一个普遍的错误):go get github...
Tomcat_redis_Session共享
prometheus监控虚拟机redis服务安装包,promethues官方网站没有提供redis_exporter安装包,下载该压缩包,解压之后即可使用
Redis,典型的NoSQL数据库服务器,和BerkeleyDB相比,它可以作为服务程序独立运行于自己的服务器主机。在很多时候,人们只是将Redis视为Key/Value数据库服务器,然而事实并非如此,在目前的版本中,Redis除了Key/...
开发工具_redis_mac版_2018最新版本_安装客户端,开发工具_redis_mac版_2018最新版本_安装客户端
redis_x64.zip redis缓存 Windows系统,64位
flink连接redis设置过期时间和密码
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object...
前后端分离,使用redis存储用户token实现登录才可以调用的接口
Redis 思维导图 Redis Redis Redis
redis_exporter-v1.1.1.linux-arm64.tar.gz
redis数据库c语言源码,非常好,值得学习借鉴。
有需要的可以直接下载使用 下载后php_redis.dll,php_igbinary.pdb放到php安装目录中ext文件夹下面 并且在php.ini文件中添加extension=php_igbinary.dll extension=php_redis.dll 然后重启apache 即可
redis desktop manager(redisdesktopmanager,rdm),一个快速、简单、支持跨平台的 redis 桌面管理工具,基于qt 5开发,支持通过ssh tunnel连接。该工具为您提供了一个易于使用的gui,可以访问您的redis数据库并执行...
labview调用redis的工具包,vi很齐全,各种命令均有
Redis_入门指南Redis_入门指南Redis_入门指南Redis_入门指南