Quantcast
Channel: V2EX - scriptB0y
Viewing all articles
Browse latest Browse all 50

[分享创造] IRedis: 一个支持语法高亮和自动补全的 Redis 命令行客户端

$
0
0

如果你像我一样,比起 Redis 的各种 GUI 客户端,更喜欢命令行客户端的话,可以试试我写的 IRedis。

安装: pip install iredis

Source code: https://github.com/laixintao/iredis/

目前支持以下 Feature:

  • Ctrl - C 取消当前命令,Ctrl - D 退出;
  • 选择历史命令(类似 fish );
  • 自动补全 Redis 命令;
  • 以及根据历史的参数补全命令的参数,比如之前使用了一个 key,或者 keys * 命令返回了 key 列表。当下次输入 SET 命令的时候,会根据 LRU 的逻辑自动补全 key ;
  • 在最底下的状态栏提示命令的用法,可使用的 Server 版本,时间复杂度等等;
  • 不是一个全屏的 TUI 客户端,只是一个命令行客户端;

新手模式(--newbie),友好的提示:

image.png

内置 HELP,可以查看命令的手册(文本来自 redis-doc):

Screen Shot 2020-01-03 at 2.15.11 PM.png

PUBSUB 可以解析成单行 Stream 显示,取消的时候自动发送 UNSUBSCRIBE ( redis-cli 的行为是直接退出的)

Screen Shot 2020-01-03 at 2.19.32 PM.png

LUA 脚本也有高亮

Screen Shot 2020-01-03 at 2.24.10 PM.png

可以对一些命令的 response 解析,比如 slowlog: Screen Shot 2020-01-03 at 2.23.47 PM.png

HASH 类型也会显示成 key-value pairs,redis-cli 是直接显示成 list 的,要自己对应奇数是 key,偶数是 value。

Screen Shot 2020-01-03 at 2.26.07 PM.png

还有其他一些 feature,大家可以自己下载尝试。

不足

  1. 我是用 prompt toolkit 这个库做 UI 框架的,这个库基于正则解析语法,所以在 IRedis 启动的时候,会有一个编译正则的时间(我的机器大约 8s )。正则编译结束之前,语法高亮和补全不会激活,但是 IRedis 可以和 redis-cli 一样正常使用。(虽然也有用户反映编译正则期间,打字有点卡顿,2.2GHz 的 CPU )。这个过程要编译上千个正则,我想过一些方法解决这个性能问题,现在还没解决。。。
  2. 还有 stream 相关的命令没有支持,除了 stream 其他 200 多个命令都是完美支持的;
  3. 这是一个第三方的客户端,不会比 redis-cli 跟上 redis-server 的 feature 更及时。

但是我觉得比起 IRedis 的高亮和补全,这些不足还是可以接受的。欢迎大家帮助提建议和代码。


Viewing all articles
Browse latest Browse all 50

Trending Articles