箱のプログラミング日記。

えんじにあ奮闘記

Redisでデータベースを指定して接続する

f:id:y_hakoiri:20191102121915j:plain

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:6379127.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へのログインもできるとのことだったのでやってみたのだけど、これはうまくいかなかった。。宿題。

参考

Redisでデータベースを切り替える方法 | shimar's blog

redis-cli, the Redis command line interface – Redis