Redisでデータベースを指定して接続する手順についてまとめていきます。
Redisとは
Redisは、オープンソース(BSDライセンス)のメモリ内データ構造ストアであり、データベース、キャッシュ、およびメッセージブローカーとして使用されます。
引用元:Redis(翻訳)
「インメモリデータベース」とよく言われる。
「インメモリ」なのでメモリにデータを格納する。メモリが開放されてしまうと当然データも消えてしまうのでキャッシュなどを格納しておくのに便利。
ただデータの永続化をすることもできるので、高速処理が必要なデータを格納しておくデータベースとしても運用可能。
データベースを指定
Redisはストア内にいくつかデータベースを設けることができる。
127.0.0.1:6379> CONFIG GET databases 1) "databases" 2) "16"
デフォルトでは16個のデータベースが用意されている模様。
↓confファイルを見てみると、ここでDBの数を変えられるみたい。
redis.conf
# Set the number of databases. The default database is DB 0, you can select # a different one on a per-connection basis using SELECT <dbid> where # dbid is a number between 0 and 'databases'-1 databases 16
「dbid is a number between 0 and 'databases'-1」とあるので、それぞれのデータベースにはインデックスを用いて接続ができる。
$ redis-cli 127.0.0.1:6379> SELECT 1 OK 127.0.0.1:6379[1]>
redis-cliに入った状態からだと、SELECTでデータベースのインデックスを指定して移動することができる。
データベースが指定された場合は127.0.0.1:6379[1]
のようにポート番号の後ろにインデックスが表示される。
ちなみに127.0.0.1:6379
は127.0.0.1:6379[0]
と同義。何も指定せずredis-cli
でログインするとデフォルトで0番目のデータベースに接続される。
$ redis-cli -n 1 127.0.0.1:6379[1]>
redis-cliに-n
オプションで引数にインデックスを指定すると直接そのデータベースにログインすることもできる。
MySQLみたいにデータベースに名前を付けたいなと思ったのだけどそれはできないみたい。。
外部からURLで接続したい場合
redis-cliでクライアントに接続する場合は-n
オプションの引数でインデックスを指定すれば良いことはわかったけど、外部からURLで接続したい場合はどうすれば良いんだ...!と思ってだいぶ調べたのでメモ
redis://ホスト:6379/1
これでいける。
ポート番号の後ろに/
区切りでデータベースのインデックスを指定すればOK。
ちなみに-u
でURIを引数に渡してredis-cli
へのログインもできるとのことだったのでやってみたのだけど、これはうまくいかなかった。。宿題。