地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

perlでredis

perlでredisを使う

redis-server のインストール

cpanmでモジュールを入れる。とりあえずバージョン指定はなしで。

$ cpanm Redis

metacpan.org

ドキュメントの文量が中なかなかに多い。。

接続する

接続を試してとりあえず適当な値をset

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

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('*'));

配列

同様にして 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));

終わり

redisの学習するついでにperlも復習。