NnmnLog

Redisの使い方メモ

作成: 2022-07-02
更新: 2022-07-02
タグ: 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.

Getting started with Redis

頑張って、/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