尝试使用 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。通过点击“测试连接”,可以确认是否成功连接。
多输入一些数据来进行确认试试看。
我能够进行简单的确认,但由于数据较少,感觉有点失落。
我们将使用在 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中进行测试数据的注册并进行确认。
令人感激的是,数据的注册数量也会显示出来。
这个功能非常实用,可以对数据进行过滤,并且还能启动控制台(CLI):) 总之,非常感谢。
通过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で起動
由于启用了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的主机上就可以了…。
如果测试连接成功,那就没问题。
操作画面
接続后的屏幕在这里。您可以像本地的Redis一样使用控制台。
当我在RDM控制台中输入bgsave时,Redis在VirtualBox上运行的输出中也显示了相应的信息。
在确认远程的Redis转储结果时,我检查了从RDM注册的数据,并发现它们已经成功保存了下来。
这样的话,似乎远程也可以。
导出连接设置
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入門