Linux下C++操作Redis
介紹
Redis的全稱是Remote Dictonary Server(遠端字典伺服器),redis是由Salvatore Sanfilippo寫的一個高效能key-value儲存系統,Redis有如下優點:
1. 高效能 - Redis能支援超過100K+每秒的讀寫頻率
2. 豐富的資料型別 - Redis支援Strings、Lists、Hashes、Sets及Ordered Sets等資料型別
3. 原子性 - Redis的所有操作都是原子性的,同時Redis還支援對幾個操作合併後的原子操作
4. 豐富的特性 - Redis還支援釋出/訂閱、事務、key過期等特性
安裝Redis
開啟Redis官網,進入下載頁面,選擇一個適合自己電腦的版本下載即可,下載飛機票
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.io預習下redis的各種命令,還可以在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
所有的準備工作已經做完了,接下來測試下如何使用C/C++操作Redis,程式碼如下:
#include <hiredis/hiredis.h>
#include <iostream>
#include <string>
int main(int argc, char **argv)
{
struct timeval timeout = {2, 0}; //2s的超時時間
//redisContext是Redis操作物件
redisContext *pRedisContext = (redisContext*)redisConnectWithTimeout("127.0.0.1", 6379,timeout);
if ( (NULL == pRedisContext) || (pRedisContext->err) )
{
if (pRedisContext)
{
std::cout << "connect error:" << pRedisContext->errstr << std::endl;
}
else
{
std::cout << "connect error: can't allocate redis context." << std::endl;
}
return -1;
}
//redisReply是Redis命令回覆物件 redis返回的資訊儲存在redisReply物件中
redisReply *pRedisReply = (redisReply*)redisCommand(pRedisContext, "INFO"); //執行INFO命令
std::cout << pRedisReply->str << std::endl;
//當多條Redis命令使用同一個redisReply物件時
//每一次執行完Redis命令後需要清空redisReply 以免對下一次的Redis操作造成影響
freeReplyObject(pRedisReply);
return 0;
}
儲存退出,執行g++ OperatorRedis.cpp -o OperatorRedis -lhiredis
進行編譯,編譯完成後執行./OperatorRedis
執行程式(在執行程式前需要啟動redis服務端,否則會得到connect error:Connection refused
這樣的錯誤),不出意外的話會看到輸出的redis伺服器資訊~
好了,C++操作Redis先進行到這裡了,我這邊封裝了一個C++操作Redis的類,等完善後會放出來...