LoginSignup
2
2

More than 3 years have passed since last update.

グラフ構造を無償で扱えないのは嫌なので、redisgraphをWSL2に極振りしてインストールしてみました。

Last updated at Posted at 2020-04-01

エイプリルフールの日なので。

タイトルはエイプリルフールなので。
そうだ、やはり、これからはグラフ構造データベースだ、と思った。...思ったのは数年前か。

前々からNeo4jは試用しているものの、営業の方から商用ライセンスがお高いと教えてもらったので、前々から気になっていたredisgraphを試してみることにした。
私の実行環境は、wsl2+ununtu on windows 10に構築したdocker(付記にインストール記を記す)。
ただし、以下、dockerが走っていれば何でも良い。dockerさえ動いていれば、インストールに要する時間は数分。

redisgraphのサイト:
https://oss.redislabs.com/redisgraph/

redisgraphは、redis上で動くクラフ構造データベース。グラフ構造にクエリをかけるcypherが通る。良い点としては、neo4jよりはメジャーなredis上で動くグラフ構造データベースというところか。割と淡々とメンテされている。

redisgraphのdocker経由での導入

dockerが走っていれば、公式サイトにある通り、以下で、redisgraphが動作する。

docker run -p 6379:6379 -it --rm redislabs/redisgraph

以下のようにredis動いてますアピールがくれば、裏方でredisgraphも動いている。

$ sudo docker run -p 6379:6379 -it --rm redislabs/redisgraph
Unable to find image 'redislabs/redisgraph:latest' locally
latest: Pulling from redislabs/redisgraph
68ced04f60ab: Pull complete
7ecc253967df: Pull complete
765957bf98d4: Pull complete
91fff01e8fef: Pull complete
76feb725b7e3: Pull complete
75797de34ea7: Pull complete
5cba5fea34d7: Pull complete
a7ce59b41c3a: Pull complete
Digest: sha256:f154681547adea4fa4d376e43ee69471d8b4f7d3cd3e2e9a42b26090b19e20fc
Status: Downloaded newer image for redislabs/redisgraph:latest
1:C 01 Apr 2020 08:37:12.414 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 01 Apr 2020 08:37:12.414 # Redis version=5.0.8, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 01 Apr 2020 08:37:12.414 # Configuration loaded
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 5.0.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

redisgraphの動作確認

redis-clientを用いる。
ubuntuでのインストール:

 sudo apt install redis-tools

cypherのクエリは エイプリルフールなので、こんな感じにしておこう。

GRAPH.QUERY Itai "CREATE (:Rider {name:'mapleメイプル'})-[:rides]->(:Mover {name:'SHシロップ'}), (:Rider {name:'surryサリー'})-[:rides]->(:Mover {name:'SHシロップ'}), (:Rider {name:'kuroko黒子'})-[:rides]->(:Mover {name:'SHUGシュガミ'})"
GRAPH.QUERY Itai "MATCH (r:Rider)-[:rides]->(t:Mover) WHERE t.name = 'SHシロップ' RETURN r.name, t.name"

実行結果

$ redis-cli
127.0.0.1:6379> GRAPH.QUERY Itai "CREATE (:Rider {name:'mapleメイプル'})-[:rides]->(:Mover {name:'SHシロップ'}), (:Rider {name:'surryサリー'})-[:rides]->(:Mover {name:'SHシロップ'}), (:Rider {name:'kuroko黒子'})-[:rides]->(:Mover {name:'SHUGシュガミ'})"
1) 1) "Nodes created: 6"
   2) "Properties set: 6"
   3) "Relationships created: 3"
   4) "Query internal execution time: 3.183400 milliseconds"
127.0.0.1:6379> GRAPH.QUERY Itai "MATCH (r:Rider)-[:rides]->(t:Mover) WHERE t.name = 'SHシロップ' RETURN r.name, t.name"
1) 1) "r.name"
   2) "t.name"
2) 1) 1) "maple\xe3\x83\xa1\xe3\x82\xa4\xe3\x83\x97\xe3\x83\xab"
      2) "SH\xe3\x82\xb7\xe3\x83\xad\xe3\x83\x83\xe3\x83\x97"
   2) 1) "maple\xe3\x83\xa1\xe3\x82\xa4\xe3\x83\x97\xe3\x83\xab"
      2) "SH\xe3\x82\xb7\xe3\x83\xad\xe3\x83\x83\xe3\x83\x97"
   3) 1) "surry\xe3\x82\xb5\xe3\x83\xaa\xe3\x83\xbc"
      2) "SH\xe3\x82\xb7\xe3\x83\xad\xe3\x83\x83\xe3\x83\x97"
3) 1) "Query internal execution time: 1.590000 milliseconds"

...wsl2上では、日本語はcliでは表示されないらしい。。

付記 wsl2にdockerをインストール

概ね、以下の紹介してくださっている通り。
https://yukituna.com/2201/

続く。

続く...のは、本家『痛いのは嫌』の方か。また脱力させてくれることを期待。
redisgaphの使い方編やサーバ側で動かて見る編は、そのうちに。ということで、みんな、エイプリルフールの日には、アドベントカレンダーとは別の気合入っていない記事を書こうよ、と言ってみたり

https://natalie.mu/comic/news/373162

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2