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
  • Instagram
  • Twitter
  • 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