Perl Hackers Hub

第43回 PerlでのRedis活用法(1)

この記事を読むのに必要な時間:およそ 1 分

本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは一野瀬翔吾さんで,テーマは「PerlでのRedis活用法」です。

本稿のサンプルコードは,本誌サポートサイトから入手できます。

Redisとは

RedisはNoSQLやKVSKey-Value Storeと呼ばれるデータベースの一種で,一般的なKVSに比べ多彩なデータ型を備えているのが特長です。文字列型,リスト型,ハッシュ型,セット型,ソート済みセット型の5つの型があり,これらの型をうまく活用することで単純なKVS以上のさまざまな機能を実現できます。

また,インメモリで動作するため,高いパフォーマンスを得ることができます。必要に応じてデータをディスクへ書き出すこともできるので,万が一トラブルが発生しても安心です。

筆者が以前運営に携わっていたソーシャルゲームでも,Perlをメインに使ったゲームサーバからRedisを利用していました。今回はその運用経験から得られた,PerlからRedisを活用するための方法を紹介します。

PerlからRedisに接続してみる

Redisはシンプルなしくみになっているので,あれこれ説明するよりも実際に手を動かしたほうが理解しやすいでしょう。さっそくPerlからRedisに接続してみることにします。

Redisのインストール

まずはRedisをインストールしましょう。Redisの公式サイトからソースコードをダウンロードし,コンパイルします。

$ wget http://download.redis.io/releases/redis-3.2.7.tar.gz
$ tar xzf redis-3.2.7.tar.gz
$ cd redis-3.2.7
$ make

インストールが正常に完了していれば,次のコマンドでRedisを起動できます。

$ redis-server

Perl用クライアントのインストール

CPANにはRedisクライアントがいくつも公開されていますが,筆者のお勧めは拙作のRedis::Fastです。Redis::Fastは安定性と速度との両立を目的に開発しています。ネットワークトラブル時の再接続機能など,プロダクションで使われることを想定した機能を持っているのが特長です。また,Redisの公式ドキュメントで推奨されているRedis.pmと高いインタフェースの互換性を持っています。筆者が運営に携わっていたソーシャルゲームでもRedis.pmからRedis::Fastへの移行を行いましたが,機械的にモジュール名を置換するだけで済みました。

では,Redis::Fastをインストールしましょう。cpanm注1を使っている人であれば,次のコマンドでRedis::Fastをインストールできます。

$ cpanm Redis::Fast
注1)
cpanmについて詳しくは,本連載第21回Carton&cpanm─⁠─Perlモジュール管理最新事情を参照してください。

Redisに実際に接続する

必要なソフトウェアのインストールが終わったところで,接続するPerlのプログラムを書いてみましょう。⁠key」というキーに「value」という値をRedisに書き込み,書き込んだ結果をRedisから読み込むプログラムを作成します。

getset.pl

# Redisに接続する
use Redis::Fast;
my $redis = Redis::Fast->new(
    server => 'localhost:6379'
);

# キーに値を書き込む
$redis->set('key' => 'value');

# キーの値を読み込む
print $redis->get('key');

「value」が表示されれば接続成功です。

$ perl getset.pl
value

<続きの(2)こちら。>

WEB+DB PRESS

本誌最新号をチェック!
WEB+DB PRESS Vol.99

2017年6月24日発売
B5判/160ページ
定価(本体1,480円+税)
ISBN978-4-7741-8987-1

  • 特集1
    [Rubyで学ぶ!]良いコードって何だろう?
    現場で光る✨ 変数,メソッド,クラス,モジュール活用法
  • 特集2
    [iOS/Android両対応!!]UIテスト自動化
    Espresso,XCTest,Appium
  • 特集3
    実践Kubernetes
    Google Container Engineではじめる新時代のコンテナ管理!
  • 一般記事
    チーム内の対立解消
    事例で学ぶ原因分析,解決方法

著者プロフィール

一野瀬翔吾(いちのせしょうご)

1988年生まれの新潟出身で元高専生。学生時代はロボコンや競技プログラミングの大会に参加。

面白法人KAYACに入社後はソーシャルゲームの開発と運営に携わる。現在はフラー株式会社に移り,Go言語を使ったAPI開発を担当する。

Twitter:@shogo82148
GitHub:https://github.com/shogo82148

コメント

コメントの記入