尝试使用 Redis Desktop Manager

想做的事情 / 原因

虽然刚开始使用Redis…但目前主要还停留在前端开发阶段,实际上并没有去构建能够存储数据到数据库的后端。

我在这篇Qiita笔记中描述了以下目的和背景。

    • バックエンドAPIとの結合時に、フロントからの操作でちゃんとデータが入っているか確認したい

 

    • redis-cliではなく、GUIでデータを確認したい

 

    • データをGUIで更新して、フロント側でどうなるか確認したい

API経由や、CLIでの更新に明るくないのがその理由
もちろんちゃんと勉強しないといけませんが….

在我想要找一个方便的工具的时候,我的同事给我介绍了Redis Desktop Manager (以下简称RDM)。

顺便提一下,平时查看数据库(RDB)的数据时,我会使用RubyMine或IntelliJ的数据库管理器。刚开始时,我曾在IntelliJ中寻找适用于Redis的插件但不幸没有找到^^;

尝试使用RDM

就这样,我们立刻安装吧。

    Redis Desktop Manager

根据写着的 “适用于所有平台”,不仅可以获取Mac版,还可以获取Windows版/Ubuntu版 + 源代码。
我使用的是Mac版,通过dmg镜像进行安装。
据说也可以通过brew进行安装 🙂

启动Redis

首先启动Redis。
使用上次使用的数据,在redis-server上启动。

使用RDM进行连接。

当你启动RDM时,会出现一个简单的界面。
点击屏幕底部的“连接到Redis服务器”按钮,进行数据源的注册。

你可以连接到正在本地环境运行的Redis,只需要输入localhost(127.0.0.1)/端口号:6379。通过点击“测试连接”,可以确认是否成功连接。

connect-local-redis.png

多输入一些数据来进行确认试试看。

我能够进行简单的确认,但由于数据较少,感觉有点失落。

我们将使用在 Redis 开发指南中给出的示例命令来注册测试数据。

※ 以下的操作不是通过 RDM 进行,而是通过 CLI (redis-cli) 进行的操作。
(实际上是在 CLI 提示符后输入的)

eval "for index = 0,100000 do redis.call('SET', 'test_key' .. index, index) end" 0
eval "for index = 0,100000 do redis.call('SET', 'test_key:' .. math.random(1, 100) .. ':' .. math.random(1,100), index) end" 0
eval "for index = 0,100000 do redis.call('HSET', 'test_large_hash', index, index) end" 0
eval "for index = 0,100000 do redis.call('ZADD', 'test_large_zset', index, index) end" 0
eval "for index = 0,100000 do redis.call('SADD', 'test_large_set', index) end" 0
eval "for index = 0,100000 do redis.call('LPUSH', 'test_large_list', index) end" 0

# 投入完了
# 0番のDBにキーがどれだけ登録されているか確認

eval "return #redis.call('keys', 'prefix-*')" 0
eval "return #redis.call('keys', '*')" 0
(integer) 100003
(2.78s)

# スクリプトで投入したキーにしぼって確認
eval "return #redis.call('keys', 'test_*')" 0
(integer) 100001

文件大小如下所示。

    1.8M 9 26 10:36 dump.rdb

完成数据登记后,通过RDM进行确认。

那么,我们立即在RDM中进行测试数据的注册并进行确认。
令人感激的是,数据的注册数量也会显示出来。

after-register-test-data.png

这个功能非常实用,可以对数据进行过滤,并且还能启动控制台(CLI):) 总之,非常感谢。

use-console-from-rdm.png

通过SSH连接到Redis。

在实际环境中,直接连接远程Redis端口经常是不可行的。即使在这种情况下,也可以通过SSH隧道进行连接设置。有这个功能真是太好了^^

即使在运行本地和Vagrant或Docker上时,也会很方便。(*但如果连接变得多层,则需要自行进行SSH端口转发)

准备SSH隧道

我会在这样的环境中试试看。

    • RDMはMacOS内で起動

 

    • リモートのRedisはVirtualBox上のUbuntuで起動

ホストオンリーネットワーク (192.168.33.1)上 に 192.168.33.15を割り当て
ufwでPort 22 (ssh) のみ許可
Ubuntu内でのRedisはport: 7777で起動

enabled-ufw.png

由于启用了ufw(防火墙),因此无法连接到redis-cli -h 192.168.33.15 -p 7777,即使在RDM连接设置中也无法正常连接。

# ufwは無効の場合、すぐ繋がる
% redis-cli -h 192.168.33.15 -p 7777
192.168.33.15:7777> 

# ufw有効の場合、だいぶ待ってタイムアウト
% redis-cli -h 192.168.33.15 -p 7777
Could not connect to Redis at 192.168.33.15:7777: Operation timed out
not connected> 

设定示例

那么,现在我们来看一下实际SSH隧道的设置。

1. 连接设置

    • 識別しやすい名前を付ける

 

    • 接続したいサーバの名前(かIP)を入れる

 

    • 接続したいRedisのポートを指定する

今回は 7777 を入力する

2. SSH隧道设置

    • Use SSH Tunnelにチェックを入れる

 

    • 踏み台にしたいリモートホスト名(IP) を入れる

 

    • SSHポートを指定(通常22)

 

    踏み台ホストにログインするためのアカウント・パスワードを指定

这次,我们要连接到一个充当跳板的主机上运行的Redis实例,只需要将跳板连接到实际运行Redis的主机上就可以了…。

如果测试连接成功,那就没问题。

use-ssh-tunnel.png

操作画面

接続后的屏幕在这里。您可以像本地的Redis一样使用控制台。

当我在RDM控制台中输入bgsave时,Redis在VirtualBox上运行的输出中也显示了相应的信息。

exec-bgsave.png

在确认远程的Redis转储结果时,我检查了从RDM注册的数据,并发现它们已经成功保存了下来。

show-dump-from-virtualbox.png

这样的话,似乎远程也可以。

导出连接设置

RDM的菜单非常简单,没有其他复杂的选项。

我试过了一下RDM的连接设置,可以将其写入/导入到文件中,以下是本次试验的设置.

第二种情况是使用SSH隧道。

% cat ~/Documents/connect-redis-conf.json 
[
    {
        "host": "127.0.0.1",
        "keys_pattern": "*",
        "name": "local",
        "namespace_separator": ":",
        "port": 6379,
        "ssh_port": 22,
        "timeout_connect": 60000,
        "timeout_execute": 60000
    },
    {
        "host": "192.168.33.15",
        "keys_pattern": "*",
        "name": "virtualbox-test",
        "namespace_separator": ":",
        "port": 7777,
        "ssh_host": "192.168.33.15",
        "ssh_password": "--------",
        "ssh_port": 22,
        "ssh_private_key_path": "",
        "ssh_user": "vagrant",
        "timeout_connect": 60000,
        "timeout_execute": 60000
    }
]

另外,在实际情况中,对于Mac而言,$HOME/Library/Preferences/rdm/connections.json将成为配置文件。

    FAQ: Where stored config with connections?

整理 / 杂感等

快速确认非常便利!功能和文档都很明了,几乎不需要犹豫。

多亏了您,对于Redis(包含key-value型数据库),我的不熟悉感大大减轻了!

下一步,我希望能够更好地通过应用程序进行数据交互。

参考资料

感谢您,我在RDM本家以及以下的网站上得到了帮助。

    • Redis Desktop Manager

redis-cliの使い方
dot.install Redis入門

广告
将在 10 秒后关闭
bannerAds