概要
普段からRedisを使ってセッション管理をしているが、アプリケーション側のフレームワーク設定でなんとなくで使っていた。
なので、DockerにてRedis環境をつくり、いろいろと試してみることにした。
Redisとは
- Redis = REmote DIctionary Server の略です。
- Key-Value型 の NoSQL データベースです。
- すべてのデータセットをメモリ内に読み込みます(インメモリ)
- 永続化ができます
- 他にも色々あります(こちら)
環境準備
Dockerにてredis環境を準備する。
# docker imageを取得 docker pull redis # イメージを確認 docker image ls # コンテナを作成 docker run --name redis_test -d redis # コンテナが起動していることを確認 docker ps -l # redisにログイン docker exec -it redis_test /bin/bash
Redisをさわってみる
redis-cli
コマンドを使用して対話的に実行する- KeyとValueのペアでデータを保存する
- Valueには型がある
Strings型
を保存する
$ redis-cli 127.0.0.1:6379> set key01 value001 OK 127.0.0.1:6379> get key01 "value001" # value02で上書き 127.0.0.1:6379> set key01 value002 OK 127.0.0.1:6379> get key01 "value002"
最も一般的なKVSのデータ型で、画像も保存できる。
Session管理のためsession-id:値(Json)
でデータを保存する。
Hash型
で保存する
$ redis-cli 127.0.0.1:6379> hset hash_key name test (integer) 1 127.0.0.1:6379> hset hash_key mail *****@test.com (integer) 1 127.0.0.1:6379> hset hash_key tel 090-0000-0000 (integer) 1 127.0.0.1:6379> hgetall hash_key 1) "name" 2) "test" 3) "mail" 4) "*****@test.com" 5) "tel" 6) "090-0000-0000" 127.0.0.1:6379> hget hash_key name "test" 127.0.0.1:6379> hget hash_key mail "*****@test.com" 127.0.0.1:6379> hget hash_key tel "090-0000-0000"
key
,field
,value
を設定できる。
key
を指定すれば全て取得できて、key
,field
を指定すればvalue
を取得する。
Jsonを保存するとkey
で全て、key
,field
で要素ごとに取り出したりできる。
List型
で保存する
$ redis-cli # 先頭に追加 127.0.0.1:6379> lpush key01 value001 (integer) 1 127.0.0.1:6379> lpush key01 value002 (integer) 2 127.0.0.1:6379> lpush key01 value003 (integer) 3 # 末尾に追加 127.0.0.1:6379> rpush key01 value004 (integer) 4 127.0.0.1:6379> rpush key01 value005 (integer) 5 127.0.0.1:6379> rpush key01 value006 (integer) 6 # 全て取得 127.0.0.1:6379> lrange key01 0 -1 1) "value003" 2) "value002" 3) "value001" 4) "value004" 5) "value005" 6) "value006"
key
に対して複数の値を設定する
データを削除する
$ redis-cli # 現在使用しているDBのデータを削除する 127.0.0.1:6379> flushdb OK
おわり
実際に試してみて理解が深まった。
monitor
コマンドでアプリケーションからアクセスしてみたら、セッション情報を保存している動作も確認できた。
画像を保存できることに興味があるので、後ほど試してみようと思いました。