Redisの使い方メモ
Redisのインストール
Ubuntuの場合
動かしてみたいだけなので、テキトーにaptで入れる。
本番環境などでちゃんと使うときの設定とかはよくわかりません。
$ sudo apt update -y && sudo apt install -y redis
Redis サーバーの起動
redis-server
コマンドで起動できる。
# redis-server 2>&1 >/dev/null &
# pgrep -l redis
401 redis-server
ドキュメントによると、ポート6379
がデフォルトらしい。
Make sure the port Redis uses to listen for connections (by default 6379 and additionally 16379 if you run Redis in cluster mode, plus 26379 for Sentinel) is firewalled, so that it is not possible to contact Redis from the outside world.
頑張って、/proc
からとってみた。
# printf '%d\n' `cat /proc/$(pgrep redis)/net/tcp | awk 'NR==2{print $2}' | awk -F":" '{print "0x"$2}'`
6379
/proc/$PID/environ
にもポート番号っぽいものが出ている。
# cat /proc/$(pgrep redis)/environ; echo;
*:6379
lsof
か、netstat
を使えるようにしたほうが良い。
Redis サーバーに接続
redisへの接続は、同梱のredis-cli
を使って接続できる。
$ redis-cli
ホストを指定して接続する場合は、-h
オプションを使う。
$ redis-cli -h 127.0.0.1
Redis サーバーの情報を調べる
info
コマンドでいろいろ出てくる。
127.0.0.1:6379> info
Key-Valueを登録・取得する
set <key> <value>
でKey-Valueのペアを登録でき、get <key>
で登録したValueを取得できる。
127.0.0.1:6379> set test1 "test value 1"
OK
127.0.0.1:6379> get test1
"test value 1"
info
コマンドで登録されたデータベースを確認できる。Keyspace
のところを見ると、db0
というデータベースに入ったらしい。
127.0.0.1:6379> info
...<snip>...
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
データベースは、db[0-15]
の16個用意されているらしく、select
コマンドを使うと操作するDBを切り替えられる。
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set test2 "test value for db1"
OK
127.0.0.1:6379[1]> get test2
"test value for db1"
select
で切り替えてset
するだけで、新しいDBが使われ、info
の表示に出てくるようになる。
127.0.0.1:6379> info
...<snip>...
# Keyspace
db0:keys=1,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
また、確かに範囲外のDBを参照しようするとエラーになる。
127.0.0.1:6379[15]> select 16
(error) ERR DB index is out of range
登録されているkeyの一覧を調べる。
keys <pattern>
でパターンに一致するキーの一覧を取得できる。
以下は、db0
に登録されているキーの一覧を取得する。
127.0.0.1:6379> keys *
1) "hoge-fuga"
2) "foo"
3) "hoge2"
4) "test1"
5) "bar"
6) "hoge-hoge"
7) "hoge"
8) "hoge1"
以下の様にすると、hoge
で始まるキーの一覧を取得できる。
127.0.0.1:6379> keys hoge*
1) "hoge-fuga"
2) "hoge2"
3) "hoge-hoge"
4) "hoge"
5) "hoge1"
また、登録されているキーの数だけ知りたい場合は、info
でわかる。
127.0.0.1:6379> info
...<snip>...
# Keyspace
db0:keys=8,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0