AWS で ElastiCache(Redis)を使おうと思って、そこへ接続するために Redis クライアントをインストールしました。
RDB 同様、データ量が多くなるとコマンドラインでは不便な場面も出てきますが、目的のキー名がある程度分かっていればコマンドラインでも十分です。
今回は Redis クライアントのインストールとコマンドラインからの使用方法を紹介します。
Redisクライアントのインストール
残念ながら、デフォルトで yum の対象となっているリポジトリには redis 本体のパッケージがありません。
1 2 3 4 5 6 7 | $ yum search redis perl-Redis.noarch : Perl binding for Redis database php54-pecl-redis.x86_64 : Extension for communicating with the Redis key-value store php55-pecl-redis.x86_64 : Extension for communicating with the Redis key-value store php56-pecl-redis.x86_64 : Extension for communicating with the Redis key-value store php70-pecl-redis.x86_64 : Extension for communicating with the Redis key-value store php71-pecl-redis.x86_64 : Extension for communicating with the Redis key-value store |
よって、remi のエンドポイントを追加します。
1 | $ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm |
これで、redis がインストールできるようになります。
1 2 | $ yum search --enablerepo=remi redis redis.x86_64 : A persistent key-value database |
redis をインストールします。
1 2 3 | $ yum -y --enablerepo=remi install redis Installed: redis.x86_64 0:4.0.10-1.el6.remi |
この時点ではバージョンも 4.0.10 なので、ElastiCache と同じメジャーバージョンですね。
ElastiCache の設定は「AWSでElastiCache(Redis)を使用する」の通り。

ElastiCacheのセキュリティグループ設定
ElastiCache の Redis インスタンスを構築した際、VPC のデフォルトセキュリティグループを設定しました。
このタイミングで Redis 用のセキュリティグループを作成します。
EC2 でも VPC のメニューからでもいいですが、セキュリティグループの一覧から「セキュリティグループの作成」ボタンをクリックします。
VPC で管理しているセグメントから 6379 番ポートにフルアクセスの許可をします。
VPC 内なのでポート指定する必要もないですが、ここでは念のため厳密に 6379 番ポートを指定しておきます。
このセキュリティグループを Redis のインスタンスに適用します。
Redis の設定画面から「変更」ボタンをクリックしてセキュリティグループの鉛筆マークから変更します。
今回はこのタイミングでセキュリティグループの変更を行いましたが、本来なら Redis のインスタンスを作成する前にセキュリティグループを作っておくのがベターでしょう。
Redisクライアントのコマンド(使い方)
使い方は、AWS の場合は ElastiCache のエンドポイントが発行されるので、そこの 6379 番ポートへ接続するだけです。
ざっくり、Redis の状態を見るためには info コマンドを送ります。
1 | $ redis-cli -h [エンドポイント] info |
info の結果で見るのは、connected_clients や used_memory が多いかもしれませんが、この辺は AWS のマネジメントコンソールのブラウザ画面でも確認できると思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # Clients connected_clients:4 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:3787488 used_memory_human:3.61M used_memory_rss:6402048 used_memory_rss_human:6.11M used_memory_peak:3909520 used_memory_peak_human:3.73M used_memory_peak_perc:96.88% used_memory_overhead:3762796 used_memory_startup:3662144 used_memory_dataset:24692 used_memory_dataset_perc:19.70% used_memory_lua:37888 used_memory_lua_human:37.00K maxmemory:436469760 maxmemory_human:416.25M maxmemory_policy:volatile-lru mem_fragmentation_ratio:1.69 mem_allocator:jemalloc-4.0.3 active_defrag_running:0 lazyfree_pending_objects:0 |
Redisでよく使うコマンド
よく使うのは、keys や運用時に削除したくなった際の del、ハッシュやリストを使う場合は少しコマンドの構成が複雑になるので、その場合はブラウザベースのツールで中身が扱えると楽かもしれません。
また、データ量が多くなると、ワイルドカード検索は遅くなるので注意しましょう。
1 2 3 4 5 6 7 8 9 10 | # 全キー表示 $ redis-cli -h [エンドポイント] keys '*' # 特定のキーの中身(value)を表示 $ redis-cli -h [エンドポイント] get 'hogehoge' # キーの有効期限確認 $ redis-cli -h [エンドポイント] ttl 'hogehoge' # キーの削除 $ redis-cli -h [エンドポイント] del 'hogehoge' # 該当キーの一括削除 $ redis-cli -h [エンドポイント] keys 'hogehoge*' | xargs redis-cli -h [エンドポイント] del |
コンソール上で日本語のマルチバイト文字が見れない場合は、iconv や nkf などで変換しちゃいましょう。
1 | $ redis-cli -h [エンドポイント] get 'hogehoge' | iconv -t UTF8 |