LinuxでのredisのインストールおよびC++操作redis

9343 ワード

Redisのインストール
Redisの公式サイトを开いて、ダウンロードのページに入って、1つの自分のコンピュータのバージョンに适するダウンロードを选んで、飞行机の切符をダウンロードしますhttp://redis.io/downloadを選択し、ダウンロードが完了すると解凍、コンパイル、インストールを行い、端末の下で次のコマンドを実行します. tar -zxvf redis-2.8.7.tar.gz cd redis-2.8.7 sudo apt-get install tcl(redis tcl 8.5) make 32bit(64 make ) sudo make install( /usr/local/bin ) make test( )
コンパイルによって生成される実行可能ファイルは、1.redis-server redisサーバ2.redis-cli redisクライアント3.redis-benchmark redis性能試験ツール4.redis-check-aof aofファイル修復ツール5.redis-check-dump rdbファイルチェックツール6.redis-sentinel redisクラスタ管理ツール
コンパイル、インストールが完了すると、端末にredis-serverと入力して最も簡単な方法でredisサービス端を起動し、別の端末にredis-cliと入力してredisサービス端を接続し、次に様々なコマンドを試みることができ、http://try.redis.ioredisの各種コマンドを予習し、redisがサポートするコマンドをredisの公式サイトで確認することもできます.
hiredisのインストール
C/C++を使用してRedisを操作するには、C/C++Redis Client Libraryをインストールする必要があります.ここではhiredisを使用しています.これは公式に使用されているライブラリで、多くの人が使用しています.端末の下で次のコマンドを順次実行してダウンロード、インストールします. git clone https://github.com/redis/hiredis cd hiredis make sudo make install( /usr/local/lib ) sudo ldconfig /usr/local/lib
C/C++操作Redis
hiredisはredisデータベースのCインタフェースで、現在linuxの下で使うことしかできなくて、いくつかの基本的な関数はredisデータベースを操作することができます
.
 
関数プロトタイプ:redisContext*redisConnect(const char*ip,int port);
説明:この関数はRedisデータベースに接続するために使用され、パラメータはデータベースのipアドレスとポートであり、一般的にredisデータベースのポートは6379である.
関数の戻り値:構造体redisContextを返します.
同様に、redisContext*redisConnectWithTimeout(const char*ip,int port,timeval tv)をタイムアウトで接続し、redisに接続されたコンテキストオブジェクトを取得する関数が提供されます.
 
関数プロトタイプ:void*redisCommand(redisContext*c,const char*format,...);
説明:この関数実行コマンドは、sqlデータベースのSQL文のように、redisデータベースの操作コマンドを実行するだけで、最初のパラメータはデータベース接続時に返されるredisContextで、残りのパラメータは変参で、C標準関数printf関数のような変参です.
関数の戻り値:戻り値はvoid*で、一般的にはredisReplyタイプに強制的に変換され、さらに処理されます.
 
関数プロトタイプvoid freeReplyObject(void*reply);
説明:redisCommand実行後に返されるredisReplyが消費するメモリを解放します.
関数の戻り値:なし.
関数プロトタイプ:void redisFree(redisContext*c);
説明:redisConnect()によって生成された接続を解放します.
関数の戻り値:なし.
 
簡単な例で説明します.
[cpp]  view plain copy
#include   
#include   
#include   
#include   
#include   
#include   
#include   
  
void doTest()  
{  
//redisデフォルトのリスニングポートは6387です.再構成ファイルでを変更できます.
    redisContext* c = redisConnect("127.0.0.1", 6379);  
    if ( c->err)  
    {  
        redisFree(c);  
        printf("Connect to redisServer faile");  
        return ;  
    }  
    printf("Connect to redisServer Success");  
      
    const char* command1 = "set stest1 value1";  
    redisReply* r = (redisReply*)redisCommand(c, command1);  
      
    if( NULL == r)  
    {  
        printf("Execut command1 failure");  
        redisFree(c);  
        return;  
    }  
    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);  
    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);     
      
      
    redisFree(c);  
      
}  
  
int main()  
{  
    doTest();  
    return 0;  
}  
 g++ OperatorRedis.cpp -o OperatorRedis -lhiredis
実行結果: