#概要
Redisの公式から出ているCのドライバを使って
Redisにアクセスするサンプルを作りましたので、そのソースと手順などを共有したいと思います。
#環境構築
CentOSを想定しています。
yum update -y
yum install -y git gcc wget vim
# yumからインストール可能にする
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
yum --enablerepo=remi,epel install -y redis
# ライブラリのインストール
git clone https://github.com/redis/hiredis.git
cd hiredis
make
make install
##データベースの設定
テスト用のデータを入れます。
service redis start # redisサーバ起動
redis-cli # redisクライアント起動
# データ投入
set 1 aaa
set 2 bbb
set 3 ccc
exit # 終了
#Redisへアクセス
redis.c
#include <stdio.h>
#include <stdlib.h>
#include <hiredis.h>
int main(void){
redisContext *conn = NULL;
redisReply *resp = NULL;
int loop = 0;
// 接続
conn = redisConnect( "127.0.0.1" , // 接続先redisサーバ
6379 // ポート番号
);
if( ( NULL != conn ) && conn->err ){
// error
printf("error : %s\n" , conn->errstr );
redisFree( conn );
exit(-1);
}else if( NULL == conn ){
exit(-1);
}
// Valueの取得
for( loop=1 ; loop < 4 ; loop++ ){
resp = (redisReply *) redisCommand( conn , // コネクション
"GET %d" , loop // コマンド
);
if( NULL == resp ){
// error
redisFree( conn );
exit(-1);
}
if( REDIS_REPLY_ERROR == resp->type ){
// error
redisFree( conn );
freeReplyObject( resp );
exit(-1);
}
printf( "%d : %s\n" , loop , resp->str );
freeReplyObject( resp );
}
// 後片づけ
redisFree( conn );
return 0;
}
##コンパイル、実行
gcc -Wall -o redis redis.c -lhiredis -L/usr/local/lib -I/usr/local/include/hiredis
このまま実行したい所だが私の環境ではライブラリが見つからない主旨のエラーが
出てしまったので対処します。
vi /etc/ld.so.conf.d/redis.conf/redis.conf # 新規作成
# ファイル内容
/usr/local/lib # 追記
ldconfig # 設定反映
実行
./redis
1 : aaa
2 : bbb
3 : ccc