LoginSignup
7
7

More than 5 years have passed since last update.

Perl から Redis を使う

Posted at

Perl から Redis に接続するための Redis ライブラリを試してみた。

redis-server のインストール

Ubuntu だったので以下のようにして入れたものを使った。

% sudo apt-get install redis-server
% redis-server -v       
Redis server v=2.8.4 sha=00000000:0 malloc=jemalloc-3.4.1 bits=64 build=a44a05d76f06a5d9
% sudo service redis-server status
redis-server is running

Redis モジュールのインストール

% cpanm Redis
% perl -MRedis -le 'print $Redis::VERSION'
1.981

Perl から接続する

まずは普通に使ってみる。
大抵の他の言語のライブラリと同じく Redis のコマンド と同名のメソッドが実装されている。

use strict;
use warnings;
use utf8;

use Redis;

my $redis = Redis->new(server => 'localhost:6379');
$redis->set('foo', 100);
$redis->set('bar', "Str");

print $redis->get('foo'), "\n";
#=> 100
print $redis->get('bar'), "\n";
#=> Str

Hash に tie して使う

Redis::Hash を使うことで Hash に tie する事ができる。
これにより通常の Hash にアクセスするのと同じコードで Redis 上にデータを保存できる。

use strict;
use warnings;
use utf8;

use Data::Dumper;
use Redis;
use Redis::Hash;

tie(my %hash, 'Redis::Hash', undef, (server => 'localhost:6379'));

$hash{apple}  = 100;
$hash{banana} = 150;
$hash{melon}  = 500;

print Dumper(\%hash);

# Redis に保存されていることを確認
my $redis = Redis->new(server => 'localhost:6379');
print Dumper($redis->keys('*'));

配列に tie して使う

同様にして Redis::List を使う事で配列に tie する事もできる。

use strict;
use warnings;
use utf8;

use Data::Dumper;
use Redis;
use Redis::List;

tie(my @list, 'Redis::List', 'languages', (server => 'localhost:6379'));

# 値の追加。 rpush が使われる
push(@list, 'Perl');
push(@list, 'Ruby');
push(@list, 'Scala');

print Dumper(\@list);

# 値の入れ替え。 lset が使われる
$list[2] = 'Haskell';

print Dumper(\@list);

# Redis に保存されていることを確認
my $redis = Redis->new(server => 'localhost:6379');
print Dumper($redis->lrange('languages', 0, -1));

参考

Perl の Redis ライブラリを調べた - Shogo's Blog
http://shogo82148.github.io/blog/2013/08/24/perl-redis-libraries/

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7