通过C语言访问Redis
简要总结
我使用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
#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