お金をかけずにサーバーの勉強をしよう

Dragonflyインストール(Redis互換)(後編)

2023年4月2日

メニューへ戻る

Redis互換の Dragonflyをインストールしたので、味わってみます。

以前「Dragonflyインストール(Redis互換)(前編)」でインストールができました。

Redisインストール」でやったのと同じ様に、Redisのクライアントから使ってみましょう。


ここでは Ubuntu Serverに Redis-cli をインストールしますけど、アクセス先が localhostになるってだけで、クライアントはどこに入れても良いと思います。

一応 snapパッケージの方は最新版に追従しているようなので、そちらで。

subro@UbuntuServer2204-1:~$ sudo snap install redis
redis 7.0.10 from Redis (redislabs) installed

2023年4月2日時点では、7.0.10が入りました。

でもって、redis-cliコマンドがどこか?なんですが、

subro@UbuntuServer2204-1:~$ which redis-cli

やっぱり、シ〜ン。(´·ω·`)

どうせ /snap/binにあるんだろうって思って観てみると、[redis.cli]という名前のコマンドに変わっている模様。
PINGを打ってみましょう。

subro@UbuntuServer2204-1:~$ /snap/bin/redis.cli ping
PONG

繋がりましたね。

データを 1つ格納してみます。

subro@UbuntuServer2204-1:~$ /snap/bin/redis.cli
127.0.0.1:6379> set testkey "test"
OK
127.0.0.1:6379> get testkey
"test"

は、速ぇッ!
切れた武○サン

とは分かりませんでした。
まぁ、25倍ってのは強力なCPUを使った時の話のようですし、そもそも Redisも速いので、この実験環境では速くなってるかは全く分からないのでした。

動作しているのは確かですが。


次は Lubuntu 22.04の環境で、Pythonのプログラムから Dragonflyを使ってみます。

Redis-pyというモジュールを使います。

subro@Lubuntu2204:~/work/python/dragonfly$ python3 -m pip install redis
Defaulting to user installation because normal site-packages is not writeable
Collecting redis
  Downloading redis-4.5.4-py3-none-any.whl (238 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 238.9/238.9 KB 4.9 MB/s eta 0:00:00
Collecting async-timeout>=4.0.2
  Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Installing collected packages: async-timeout, redis
Successfully installed async-timeout-4.0.2 redis-4.5.4

入りました。

[dragonfly.py]という Pythonスクリプトファイルを作りました。
[UbuntuServer2204-1]が Dragonflyをインストールしたマシンの名前です。
取得したデータはバイナリのようなので、decode()で変換して print()で表示できるようにしています。

subro@Lubuntu2204:~/work/python/dragonfly$ cat dragonfly.py
import redis

dragonfly = redis.Redis(host='UbuntuServer2204-1', port=6379, db=0)
test = dragonfly.get('testkey')
print(test.decode())

実行します。

subro@Lubuntu2204:~/work/python/dragonfly$ python3 dragonfly.py
test

「test」って値が取れていますね。
上手く行きました。

[dragonfly2.py]という Pythonスクリプトファイルを作りました。
100個のキー・バリューを作って、それらを1件ずつ抽出(かつ削除)しながら表示しています。

subro@Lubuntu2204:~/work/python/dragonfly$ cat dragonfly2.py
import redis

dragonfly = redis.Redis(host='UbuntuServer2204-1', port=6379, db=0)

for i in range(1, 100 + 1):
    dragonfly.rpush('value' + str(i), i)

for j in range(1, 100 + 1):
    print(dragonfly.lpop('value' + str(j)).decode())

dragonfly.close

実行します。

subro@Lubuntu2204:~/work/python/dragonfly$ python3 dragonfly2.py
1
〜〜〜 省略 〜〜〜
100

は、速ぇッ!
切れた武○サン

とは、やっぱりならないんですが、上手くいきましたね。


という訳で、Pythonから Redisのモジュールを使って Dragonflyをネットワーク越しに使ってみました。

私には WEBシステムのセッションデータくらいしか入れるデータを思いつかないのですが、実データを KVSで管理したい要件もどこかにはあるんですよね。

Redisに対して最大25倍のスピードアップがどれほどのインパクトを与えるものか分かりませんでしたが、これは Redisを置き換えるのでしょうか。

パブリッククラウド業者がお金を払ってコレを採用するなら、Redisサービスの代わりに Dragonflyサービスというのが出てくるのかも知れません。