調査 #121
Tatsuya ISHIGAKI さんが29日前に更新
Docker 勉強中に、サービスの例として使用されていた **Redis** 自分で使用したことないので、少し調査 ## 参考Web - [公式] [Redis](https://redis.io/) - [GitHub] [redis/redis](https://github.com/redis/redis) - [Qiita] [初心者による初心者のためのRedis解説](https://qiita.com/keinko/items/60c844bcf329bd3f4af8) - [IBM] [Redisとは](https://www.ibm.com/jp-ja/think/topics/redis) - [DeigNET] [Redisとは](https://www.designet.co.jp/faq/term/?id=UmVkaXM) - [Zenn] [Redisの基本データ型とコマンド](http://zenn.dev/sdb_blog/articles/sdfasdcbaf1298sdf) - [Qiita] [redis-cliでよく使うコマンド20選](https://qiita.com/hatsu/items/a52817364160e0b6bb60) - [Qiita] [Redisチートシート(設定編)](https://qiita.com/morrr/items/26dbdd87df03315fa680#%E6%A6%82%E8%A6%81) ## Redis 概要 - NoSQL型のDB - キーバリュー型のDB - インメモリDB - `redis` というパッケージでインストール - サービスは `redis-server` で起動 - サービスへは `redis-cli` というクライアントでアクセス - `redis-cli` で接続後の命令例 (`redis:6379> ` は `redis-cli` のプロンプト) ``` redis:6379> set age 42 # キー "age", 値 "42" を登録 OK redis:6379> set name smith # キー "name", 値 "smith" を登録 OK redis:6379> get age # キー "age" の値を取得 "42" redis:6379> keys * # パターンでキーを一覧表示 1) "age" 2) "name" ``` ## Redis CLI #### サービス起動 - `redis-server [設定ファイル] [オプション]` - 代表オプション - `--port N` N 番ポートで起動 - `--daemonize yes` デーモン化して起動 - `--databases N` データベース数を N に - 設定ファイルにはオプションと同様の内容を書いて、起動時に指定することで適用 ``` # 設定ファイル内容の例 port 30000 daemonize yes databases 2 ``` - 指定が無い場合、ポート `6379` 、非デーモンで起動 #### クライアント起動 - `redis-cli [オプション] [コマンド]` - 代表オプション - `-h ホスト` ホスト指定 (デフォルト `127.0.0.1`) - `-p ポート番号` ポート指定 (デフォルト `6379`) - `-n データベース番号` 0 - 15 - 引数にコマンドを与えると、非対話的に実行 - `redis-cli -h localhost SET hoge bar` - 標準入力から redis コマンド文字列を与えると、非対話的に実行 - `echo "SET hoge bar" | redis-cli` - 複数行のコマンドを記載したファイルを読み込ませるなども - 他の場合には対話的インタフェースが起動する (概要の例の通り) ## Redis 追加情報 - データ型 - 主なデータ型 - String - List - Hash - Set - Sorted Set - データ型の基本は文字列 (String) で、数値も文字列で保持して利用する - また、バイナリデータも文字列型として保持、利用する (画像なども) - redis cluster という仕組みでの分散保持、併せてマスタースレーブ型での自動フェイルオーバーも利用可能 - List型のコマンドには `LPOP` `RPOP` `LPUSH` `RPUSH` があり、スタック・キューとして使える - データベースは 0 ~ 15 の番号で指定する