linuxの下でredisのインストールは、使用します。
7606 ワード
リディア:
1.直接ダウンロード:wget
http://download.redis.io/releases/redis-2.8.9.tar.gz
2.makeコンパイル
3.プロファイルredis.co nfigを設定し、srcディレクトリで起動を実行します。/redis-server ../redis.co nfig 設定ファイルを添付してサーバーのバックグラウンドを動作させ、デーモンになります。
4.クライアントにログインし、同じSrcディレクトリにいます。/redis-cli テレネットもできます ip ポーティングはキーを出力する時に$2があります。
5.プログラムを書く時はredisのapiを使う必要があります。方法は、hiredisディレクトリの下でスタティックライブラリファイルのlibhiredis.aを作成します。頭のファイルを/usr/includeに入れて、スタティックライブラリファイルを/libに入れて、ファイルをコンパイルする時に-lhiredisを加えると、ダイナミックライブラリも同様の方法で呼び出すことができます。
c言語接続はredisの例を挿入します。 http://blog.csdn.net/hj19870806/article/details/8724907
http://yaocoder.blog.51cto.com/2668309/1297031
http://php.net/manual/zh/book.memcache.php
http://docs.linuxtone.org/ebooks/NOSQL/memcached/memcached--%E9%BB%91%E5%A4%9C%E8%B7%AF%E4%BA%BA.pdf
gccソースコンパイル:
http://www.cnblogs.com/codemood/archive/2013/06/01/3113200.html
ダウンロード先:http://ftp.gnu.org/ GNUのftpサーバーのダウンロード
リディア:
1.直接ダウンロード:wget
http://download.redis.io/releases/redis-2.8.9.tar.gz
2.makeコンパイル
3.プロファイルredis.co nfigを設定し、srcディレクトリで起動を実行します。/redis-server ../redis.co nfig 設定ファイルを添付してサーバーのバックグラウンドを動作させ、デーモンになります。
4.クライアントにログインし、同じSrcディレクトリにいます。/redis-cli テレネットもできます ip ポーティングはキーを出力する時に$2があります。
5.プログラムを書く時はredisのapiを使う必要があります。方法は、hiredisディレクトリの下でスタティックライブラリファイルのlibhiredis.aを作成します。頭のファイルを/usr/includeに入れて、スタティックライブラリファイルを/libに入れて、ファイルをコンパイルする時に-lhiredisを加えると、ダイナミックライブラリも同様の方法で呼び出すことができます。
c言語接続はredisの例を挿入します。 http://blog.csdn.net/hj19870806/article/details/8724907
http://yaocoder.blog.51cto.com/2668309/1297031
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <stdarg.h>
#include <string.h>
#include <assert.h>
#include <hiredis/hiredis.h>
void doTest()
{
int timeout = 10000;
struct timeval tv;
tv.tv_sec = timeout / 1000;
tv.tv_usec = timeout * 1000;
// Redis , Redis 。
// Redis 。
redisContext* c = redisConnect((char*)"127.0.0.1", 6379);
if (c->err) {
redisFree(c);
return;
}
const char* command1 = "set stest1 value9";
redisReply* r = (redisReply*)redisCommand(c,command1);
// , NULL, , 。
// , , 。
if (NULL == r) {
redisFree(c);
return;
}
// Redis , 。
// , Redis ,
// Redis 。:)
// set REDIS_REPLY_STATUS, "OK"
// , 。 , 。
if (!(r->type == REDIS_REPLY_STATUS && strcasecmp(r->str,"OK") == 0)) {
printf("Failed to execute command[%s].
",command1);
freeReplyObject(r);
redisFree(c);
return;
}
// , , 。
freeReplyObject(r);
printf("Succeed to execute command[%s].
",command1);
const char* command2 = "strlen stest1";
r = (redisReply*)redisCommand(c,command2);
if (r->type != REDIS_REPLY_INTEGER) {
printf("Failed to execute command[%s].
",command2);
freeReplyObject(r);
redisFree(c);
return;
}
int length = r->integer;
freeReplyObject(r);
printf("The length of 'stest1' is %d.
",length);
printf("Succeed to execute command[%s].
",command2);
const char* command3 = "get stest1";
r = (redisReply*)redisCommand(c,command3);
if (r->type != REDIS_REPLY_STRING) {
printf("Failed to execute command[%s].
",command3);
freeReplyObject(r);
redisFree(c);
return;
}
printf("The value of 'stest1' is %s.
",r->str);
freeReplyObject(r);
printf("Succeed to execute command[%s].
",command3);
const char* command4 = "get stest2";
r = (redisReply*)redisCommand(c,command4);
// , stest2 , Redis , 。
if (r->type != REDIS_REPLY_NIL) {
printf("Failed to execute command[%s].
",command4);
freeReplyObject(r);
redisFree(c);
return;
}
freeReplyObject(r);
printf("Succeed to execute command[%s].
",command4);
const char* command5 = "mget stest1 stest2";
r = (redisReply*)redisCommand(c,command5);
// stest2 ,Redis , nil。
// , 。
if (r->type != REDIS_REPLY_ARRAY) {
printf("Failed to execute command[%s].
",command5);
freeReplyObject(r);
redisFree(c);
//r->elements , key , 。
assert(2 == r->elements);
return;
}
int i;
for (i = 0; i < r->elements; ++i) {
redisReply* childReply = r->element[i];
// ,get string。
// key , REDIS_REPLY_NIL。
if (childReply->type == REDIS_REPLY_STRING)
printf("The value is %s.
",childReply->str);
}
// , , redisReply 。
freeReplyObject(r);
printf("Succeed to execute command[%s].
",command5);
printf("Begin to test pipeline.
");
// ,
//redisGetReply Redis 。
// , IO 。
// , 。
/* if (REDIS_OK != redisAppendCommand(c,command1)
|| REDIS_OK != redisAppendCommand(c,command2)
|| REDIS_OK != redisAppendCommand(c,command3)
|| REDIS_OK != redisAppendCommand(c,command4)
|| REDIS_OK != redisAppendCommand(c,command5)) {
redisFree(c);
return;
}
*/
redisAppendCommand(c,command1);
redisAppendCommand(c,command2);
redisAppendCommand(c,command3);
redisAppendCommand(c,command4);
redisAppendCommand(c,command5);
redisReply* reply = NULL;
// pipeline , , 。
if (REDIS_OK != redisGetReply(c,(void**)&reply)) {
printf("Failed to execute command[%s] with Pipeline.
",command1);
freeReplyObject(reply);
redisFree(c);
}
freeReplyObject(reply);
printf("Succeed to execute command[%s] with Pipeline.
",command1);
if (REDIS_OK != redisGetReply(c,(void**)&reply)) {
printf("Failed to execute command[%s] with Pipeline.
",command2);
freeReplyObject(reply);
redisFree(c);
}
freeReplyObject(reply);
printf("Succeed to execute command[%s] with Pipeline.
",command2);
if (REDIS_OK != redisGetReply(c,(void**)&reply)) {
printf("Failed to execute command[%s] with Pipeline.
",command3);
freeReplyObject(reply);
redisFree(c);
}
freeReplyObject(reply);
printf("Succeed to execute command[%s] with Pipeline.
",command3);
if (REDIS_OK != redisGetReply(c,(void**)&reply)) {
printf("Failed to execute command[%s] with Pipeline.
",command4);
freeReplyObject(reply);
redisFree(c);
}
freeReplyObject(reply);
printf("Succeed to execute command[%s] with Pipeline.
",command4);
if (REDIS_OK != redisGetReply(c,(void**)&reply)) {
printf("Failed to execute command[%s] with Pipeline.
",command5);
freeReplyObject(reply);
redisFree(c);
}
freeReplyObject(reply);
printf("Succeed to execute command[%s] with Pipeline.
",command5);
// pipeline , redisGetReply,
// , 。
// 。
redisFree(c);
return;
}
int main()
{
doTest();
return 0;
}
memcache:http://php.net/manual/zh/book.memcache.php
http://docs.linuxtone.org/ebooks/NOSQL/memcached/memcached--%E9%BB%91%E5%A4%9C%E8%B7%AF%E4%BA%BA.pdf
gccソースコンパイル:
http://www.cnblogs.com/codemood/archive/2013/06/01/3113200.html
ダウンロード先:http://ftp.gnu.org/ GNUのftpサーバーのダウンロード