のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

AWS PrelでRedisを扱う編

cpanでRedisのモジュールをとってきます

cpanはここ

Redis - search.cpan.org

#追記
wgetしなくてもcpanm Redisで簡単にインストールできます

 

 

wgetでインストールしてきます

# wget http://search.cpan.org/CPAN/authors/id/D/DA/DAMS/Redis-1.975.tar.gz
# tar xfz Redis-1.975.tar.gz 
# cd Redis-1.975
# perl Makefile.PL
# make
# make install

 

試しコードかきます

# vim sample.pm
#!/usr/bin/env perl
use Redis;

実行するとエラーがでました

Can't locate IO/Socket/Timeout.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/Redis.pm line 24.

 

Timeout.pmも必要みたいなので、同じ手順でインストールします

# wget http://search.cpan.org/CPAN/authors/id/D/DA/DAMS/IO-Socket-Timeout-0.11.tar.gz
# tar xfz IO-Socket-Timeout-0.11.tar.gz 
# cd IO-Socket-Timeout-0.11
# perl Makefile.PL
# make
# make install

 

インストール終わったらもう一回実行

Can't locate PerlIO/via/Timeout.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/IO/Socket/Timeout.pm line 17.

 

今度は違うTimeout.pmがが。。もっかい!

# wget http://search.cpan.org/CPAN/authors/id/D/DA/DAMS/PerlIO-via-Timeout-0.29.tar.gz
# tar xfz PerlIO-via-Timeout-0.29.tar.gz
# cd PerlIO-via-Timeout-0.29
# perl Makefile.PL
# make
# make install

 

"timeout_strategy" is not exported by the PerlIO::via::Timeout module

Can't continue after import errors at /usr/local/share/perl5/IO/Socket/Timeout.pm line 17.

またエラーが発生したので、

Timeoutのuseきってとりあえずperl動かすことに...

 

とりあえずRedisのサンプルプログラムくんでみた

#!/usr/bin/env perl
use strict;
use warnings;

# Redisをuseします
use Redis;

# サンプルプログラム実行します
print "program start\n";

# 設定項目
my $redis_host = "127.0.0.1";
my $redis_port = 6379;

# Redisのインスタンス作成
my $redis = Redis->new(server => sprintf("%s:%d", $redis_host, $redis_port));

# Redisに値を入れます
$redis->set(score => 300);
$redis->set(money => 150);

# 値が入っているか確認
if($redis->exists("score"))
{
# 入っていれば出力
print "スコア:".$redis->get("score")."\n";
}
else
{
# 入っていなければ
print "値が入ってません\n";
}

# 終了
print "done\n";

実行するとこんな感じです

program start
スコア:300
done

値がちゃんと格納されてますねー

 

次はランキングとかソートまわりみたいです