微信公众号:数据库杂记   个人微信: iiihero
我是iihero. 也可以叫我Sean.
iihero@CSDN(https://blog.csdn.net/iihero) 
Sean@墨天轮 (https://www.modb.pro/u/16258)
数据库领域的资深爱好者一枚。
水木早期数据库论坛发起人 db2@smth,早期多年水木论坛数据库版版主。
国内最早一批DB2 DBA。前后对Sybase ASE及SQLAnywhere, PostgreSQL, 
HANA, Oracle, DB2, SQLite均有涉猎。曾长期担任CSDN相关数据库版版主。
SAP数据库技术专家与开发架构师,PostgreSQL ACE.
代表作有:<<Java2网络协议内幕>> <<Oracle Spatial及OCI高级编程>> 
<<Sybase ASE 15.X全程实践>>
兴趣领域:数据库技术及云计算、GenAI

业余专长爱好:中国武术六段 陈式太极拳第13代传人(北京陈式太极拳第5代传人)
职业太极拳教练,兼任北京陈式太极拳研究会副秘书长。
如果想通过习练陈式太极拳强身健体,也可以与我联系。

 

前言

记得前边为了使用windows上的命令行客户端去连接Cloud上边的 hyperscale Redis, 很是费了半天劲,才折腾出一个可以连接的支持TlS的版本。里边要用到msys + mingw,而且接连几个坑。详见:Redis 7.0.X 在Windows下编译支持TLS连接,遇坑埋坑

那么有没有单独的GUI式的客户端工具可以连接呢?如果有可能,将两者结合起来用,看着也是蛮不错的。

实作与分析

1、直接编译后的redis-cli命令行

这个不多说, 直接:

redis-cli -c -p <port> -a <password> --tls --no-auth-warning

其中:

  • -c Enable cluster mode (follow -ASK and -MOVED redirections).
  • -a 指定密码
  • -tls 暗示要使用SSL
  • --no-auth-warning 相关警告信息不输出

这个自行编译出来的目录内容大概如下:

c:\tools\redis\bin>dir
2023-07-15  12:50 AM         2,982,622 msys-2.0.dll
2023-06-01  07:17 AM         4,523,484 msys-crypto-3.dll
2023-06-01  07:17 AM           610,496 msys-ssl-3.dll
2023-07-30  04:19 PM           997,529 redis-benchmark.exe
2023-07-30  04:19 PM         7,883,673 redis-check-aof
2023-07-30  04:19 PM         7,883,673 redis-check-rdb
2023-07-30  04:19 PM         1,155,751 redis-cli.exe
2023-07-30  04:19 PM         7,883,673 redis-sentinel
2023-07-30  04:19 PM         7,883,673 redis-server.exe
2023-07-10  07:39 PM           106,545 redis.conf
2023-07-10  07:39 PM            14,005 sentinel.conf

实际上也就多了三人依赖于msys运行时库的文件:

msys-2.0.dll, msys-crypto-3.dll, msys-ssl-3.dll。

而redis-cli的基本用法,可以完全参考Redis官方文档。

2、RedisInsight V2客户端

整个项目的地址在:https://github.com/RedisInsight/RedisInsight/wiki/How-to-build-and-contribute

它会教我们如何build和启动运行。也可以从下边的地址直接下载:

https://redis.com/redis-enterprise/redis-insight/#insight-form

上边“吹牛”说是最好的Redis GUI工具。在使用Redis或Redis Stack进行开发时,将您的生产力提升到一个新的水平!使用RedisInsight可视化和优化Redis数据。RedisInsight是一个强大的桌面管理器,为Redis和Redis Stack提供了一个直观高效的UI,并在一个功能齐全的桌面UI客户端中支持CLI交互。

不过呢,很遗憾,它支持不了我要的通过CF ssl连接方式去连接hyperscaler上的Redis.

image-20230806082055173

Test Connection的时候,直接给我报了个:Server closed the connection。

但是简单的Redis连接,还是可以的。相信大部分的Redis,它都能应付过去。界面还是相当漂亮的。

image-20230806082255584

连接上以后,它能把key的类型,值,期限,以及value的真实大小都给你显示出来,一目了然。简单的管理,相信没有问题。

我在测一个值为132MB,右边显示的时候,OOM了。

然后,它有一个Bulk Action:

Delete好理解。还有一个Upload Action,就是直接传输一个Redis批处理的文件:

image-20230806083208074

感觉这个功能也还行。凑合着用。小遗憾的地方,是不是没有一个批量导出的功能?呵呵。

简单的常规的操作功能,它还是不错的。

但是,有一个地方还是值得称赞的,就是它的系统监控与分析功能,看看下图,直接new一个report之后的效果:

image-20230806083638477

基于此,把这个工具列到这里,结合起来用。

3、Another Redis Desktop Manager

这个是咱们国人开发的。项目地址在:https://github.com/qishibo/AnotherRedisDesktopManager

经过几次试验,发现它居然能支持到Cloud上边的Hyperscaler Redis的连接。手动建立Tunnel之后,能连接上。

连接

image-20230806084319866

管理界面效果图

image-20230806084508681

界面确实难看,但是功能“很强大”,可以导入导出。这个对于一般的开发应用管理来说,非常实用。

分析功能也有:就是通过连接节点的"All Redis Info"来展示。稍微弱了一点儿。

在实际验证的过程中,也发现一些问题,必须通过别的手段来解决。

如果值比较大,比如100多兆,几条数据就会让export一直hang在那里,不能工作。

但总体来说,这个客户端工具,还是蛮强大的。平日里可以用它来操作常见的内容。

4、其它

当然,因为数据整理的需要,也试过基于Ruby的redis-dump, 详见:

https://github.com/delano/redis-dump

Ruby的生态不是很好,尤其是在Windows下边的使用,同样要搞到:msys + mingw,最后编译还出了问题。这个redis-dump好像也是国人开发的。不知道现在用的人多不多,它支持的环境还是比较有限。

感觉,如果以上这些工具都达不到自己的目的的话,不如自己手写DIY一个,可以即时更改代码进行调试。

最方便可能就是使用redis-python。直接python3 + pip install redis,所有需要的依赖关系全都替你搞定。连接的代码片段也简单:

#!/usr/bin/python
import redis

rc = redis.Redis(host='localhost', port=1167, ssl=True, ssl_cert_reqs="none", password='xxxxxxxxxxxxxxxxKuULfsbBPCo')
rc.ping()

# print(rc.keys);

for i in range(10000):
    rc.set('{0:d}'.format(i),  'value_{0:d}'.format(i))
    print('Value {0:d} done'.format(i))
print('finished redis operation');

这片代码,就是往Redis里头,快速添加10000个key的小片段代码。连接信息也很直接:

ssl=True, ssl_cert_reqs="none", password='xxxxxxxxxxxxxxxxKuULfsbBPCo'
指定用SSL,并且不需要证书,但是要提供密码。

在前边的GUI工具以及redis-dump管理导入导出数据不能工作时,不防自己DIY一把,还可以趁机优化一下代码,提高下性能。

总结

Redis作为一款优秀的开源K/V数据库,挑选合适的GUI客户端工具还是蛮重要的。通常情况下redis-cli能满足绝大多数需求,但是在Cloud环境下, --rdb之类的备份功能用不了。你不得不求助于一些工具,有时候,也不得不自己DIY一下。自己动手,丰衣足食。

Cloud厂商有的确实是为了将用户引导向自己的基础设施,变了各种方法来诱导:

  • 备份,让你直接备份至S3存储,都在它的控制之下。你把S3的数据再download下来,也需要自己进行转换。
  • 导入,也是用它的格式。你自己没办法自由自主的控制。

GUI工具:还是推荐上边的两款:RedisInsight V2以及AnotherRedisDesktopManager

命令行工具:有下载的就下载安装,不能的,就自己编译一个。另外,Redis-python是一个不错的客户端库。基本上你想干的都能干。Redis在NodeJs和Go、Rust上边的接口库也不错。目前就是Redis-java的比较乱,要支持各种Redis的形式,需要进行不同程度的适配。

(Redis cluster, SSL support, Sentinel等等)。

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐