c++ redis-client

來源:互聯網
上載者:User

標籤:

http://hahaya.github.io/operator-redis-under-linux/#0-tsina-1-10809-397232819ff9a47a7b7e80a40613cfe1

 

Linux下C++操作Redis

hahaya
日期:2014-03-12

介紹

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官網,進入下載頁面,選擇一個適合自己電腦的版本下載即可,下載飛機票http://redis.io/download,下載完成後解壓、編譯、安裝,依次在終端下執行如下命令:

  1. tar -zxvf redis-2.8.7.tar.gz
  2. cd redis-2.8.7
  3. sudo apt-get install tcl(redis測試程式需要tcl版本至少為8.5)
  4. make 32bit(64位系統直接使用make即可)
  5. sudo make install(將編譯產生的可執行檔拷貝到/usr/local/bin目錄下)
  6. 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,這是官方使用的庫,而且用得人比較多,在終端下依次執行下列命令進行下載、安裝:

  1. git clone https://github.com/redis/hiredis
  2. cd hiredis
  3. make
  4. sudo make install(複製產生的庫到/usr/local/lib目錄下)
  5. sudo ldconfig /usr/local/lib
C/C++操作Redis

所有的準備工作已經做完了,接下來測試下如何使用C/C++操作Redis,代碼如下:

  1. #include <hiredis/hiredis.h>
  2. #include <iostream>
  3. #include <string>
  4. int main(int argc, char **argv)
  5. {
  6. struct timeval timeout = {2, 0}; //2s的逾時時間
  7. //redisContext是Redis操作對象
  8. redisContext *pRedisContext = (redisContext*)redisConnectWithTimeout("127.0.0.1", 6379, timeout);
  9. if ( (NULL == pRedisContext) || (pRedisContext->err) )
  10. {
  11. if (pRedisContext)
  12. {
  13. std::cout << "connect error:" << pRedisContext->errstr << std::endl;
  14. }
  15. else
  16. {
  17. std::cout << "connect error: can‘t allocate redis context." << std::endl;
  18. }
  19. return -1;
  20. }
  21. //redisReply是Redis命令回複對象 redis返回的資訊儲存在redisReply對象中
  22. redisReply *pRedisReply = (redisReply*)redisCommand(pRedisContext, "INFO"); //執行INFO命令
  23. std::cout << pRedisReply->str << std::endl;
  24. //當多條Redis命令使用同一個redisReply對象時
  25. //每一次執行完Redis命令後需要清空redisReply 以免對下一次的Redis操作造成影響
  26. freeReplyObject(pRedisReply);
  27. return 0;
  28. }

儲存退出,執行g++ OperatorRedis.cpp -o OperatorRedis -lhiredis進行編譯,編譯完成後執行./OperatorRedis運行程式(在運行程式前需要啟動redis服務端,否則會得到connect error:Connection refused這樣的錯誤),不出意外的話會看到輸出的redis伺服器資訊~
好了,C++操作Redis先進行到這裡了,我這邊封裝了一個C++操作Redis的類,等完善後會放出來...

Redis學習連結
    1. http://redis.io/:Redis官網
    2. http://redis.cn/:Redis中文官網
    3. http://try.redis.io/:線上體驗Redis
    4. https://github.com/antirez/redis:Redis開發版本源碼
    5. http://www.redisdoc.com/en/latest/:Redis命令參考
    6. http://blog.nosqlfan.com/topics/redis:Redis系類文章
    7. http://redisbook.readthedocs.org/en/latest/:Redis設計與實現
    8. https://github.com/huangz1990/annotated_redis_source:注釋版Redis源碼

c++ redis-client

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.