2017/09/03
Redis入門
RDBアクセスのキャッシュを検討した際に、Redisが良さげだったのでかんたんに調べてみた
Redisとは
- シングルスレッドで動く超高速R/Wが可能なオンメモリDB
特徴
- オンメモリで超高速R/W(参考:メモリはHDDの10万倍早い)
- シングルスレッドで並列処理は出来ない。必然的に全データ操作は排他的となる。またCPUは1コアのみ使用
- ID指定で複数DBを持てる
- 多様なデータ構造を持てる(String, Hash, List, Set, SortedSet)
- Master/Slave形式の非同期レプリケーション機能あり。ただしマルチマスタでは無いので参照系、更新系の役割分担が必要。
- トランザクション対応可能
- データの永続化が出来る(一時点でディスクにdump(.rdb)取得->次回読み込み。ただしRAM容量に収まるデータのみ)
- 多種のキャッシュサーバと異なり、明示的なデータ削除をしない限りデータの自動削除が行われない。
- 管理機能充実(Redis Sentinelが死活監視、通知、クラスタ管理、自動フェールオーバ等を担当)
- ANSI C言語で書かれている
用途
- Webアプリケーションのセッション管理
- RDBアクセスのオンメモリキャッシュ
- 一時的なデータストレージ(IoTデータ一時保存先等)
- ジョブキュー
- PUB/SUBによるメッセージング
利用実績
- Github
- StackOverview
- LINE
- DeNA
- サイバーエージェント
- AWSもElastiCacheでRedis版を提供
インストール方法(CentOS7)
- EPEL導入
- yum -y install epel-release
- REMI導入
- wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
- rpm -Uvh remi-release-7*.rpm
- Redisインストール
- yum -y install redis –enablerepo=remi,remi-test,epel
基本操作
-
バージョン確認 $ redis-server -v
-
起動 $ redis-server
-
CLI接続開始 $ redis-cli
-
CLI接続終了 $ exit
-
シャットダウン $ shutdown
-
データ登録 $ set key1 val1
-
データ参照 $ get key1
-
手動ディスク保存 オフライン
$ save
オンライン(バックグラウンド操作)
$ bgsave
データは/var/lib/redis/dump.rdbにバイナリ形式で保存される。
参考
- Redis勉強会資料(2015/06 update)
- https://www.slideshare.net/yujiotani16/redis-26851700
- 真剣にRedisを使ってみようという気持ちになったのでRedisについて知っていることを書く
- http://t-cyrill.hatenablog.jp/entry/2016/12/11/224604
- RedisのCRUD
- http://qiita.com/yoh-nak/items/fce5417ebbf613d436f1