一、簡介
hiredis是一個輕量級的C語言庫,簡單易用,專註於Redis。
hiredis支持高性能的異步操作和管道操作,以及簡單的同步操作。除此之外,它還支持連接復用、重連機制等功能。
hiredis可在Windows、Linux、Unix等平台運行,並通過API進行更加靈活高效的開發。
二、安裝
hiredis的安裝十分簡便,在官方下載頁面直接下載對應版本library即可。安裝完成之後,在連接Redis使用時只需要在頭部文件中include即可。
具體代碼段如下:
#include
同時,在連接redis時,需要指定redis主機IP地址和端口號,具體代碼如下:
redisContext *c = redisConnect("127.0.0.1", 6379); if (c == NULL || c->err) { if (c) { printf("Connection error: %s\n", c->errstr); redisFree(c); } else { printf("Connection error: can't allocate redis context\n"); } return NULL; }
三、基本操作
對於基本操作,包括增刪改查,hiredis提供了豐富多樣的API函數,開發人員可根據不同需求自由選擇。在本部分,我們以初學者常用的基本操作——set和get為例進行講解。
3.1 set操作
set操作是一種簡單的給Redis設置鍵值的操作,具體代碼如下:
redisReply *reply = (redisReply*)redisCommand(c,"SET %s %s", key, value); freeReplyObject(reply);
set操作包括設置鍵值對的值,對已有值的鍵進行覆蓋。同時還可設置過期時間和NX/XX選項。
3.2 get操作
get操作是一種簡單的獲取Redis鍵值對的操作,具體代碼如下:
redisReply *reply = (redisReply*)redisCommand(c,"GET %s", key); if(reply->str != NULL) { printf("get value:%s\n", reply->str); freeReplyObject(reply); return 1; }
get操作返回Redis鍵值對的值,如果鍵不存在則返回NULL。
四、高級操作
在實際的Redis使用過程中,不僅僅是基本的操作,比如排序、批量操作等都是開發者常常接觸的高級操作。hiredis也提供了豐富多樣的API函數對這些操作進行支持。
4.1 排序
排序是對存儲在Redis的字符串或列表的集合進行排列的操作。
排序函數使用的是SORT命令,函數原型如下:
redisReply* redisSortCommand(redisContext* c, const char *key, const char *by_pattern, const char *get_pattern, int offset, int count, int order);
其中,key參數指定要進行排序的鍵名,by_pattern指定作為被排序數據的權重,get_pattern則指定要返回的數據集合,offset和count決定要返回的排序結果集合,order是指定排列順序,取值可以是ASC或DESC。
具體代碼如下:
//排序 redisReply* r = redisSortCommand(c, "sortkey", "weight_*", "#", 0, -1, 0); if (r->type == REDIS_REPLY_ARRAY) { for (unsigned int j = 0; j elements; j ++) printf("%u) %s\n", j, r->element[j]->str); freeReplyObject(r); }
4.2 批量操作
批量操作是指一次性對多個鍵進行操作,這樣做能夠提高效率。
操作函數使用的是管道技術,即將操作先緩存到本地,等到多個命令的緩存命令一齊發送給Redis服務器,可以減小網絡IO的負擔,提高系統性能。
具體代碼如下:
redisReply *reply; redisAppendCommand(c,"GET %s","name"); redisAppendCommand(c,"GET %s","age"); redisAppendCommand(c,"GET %s","address"); redisAppendCommand(c,"GET %s","phone"); redisAppendCommand(c,"GET %s","email"); redisAppendCommand(c,"GET %s","hobby"); redisGetReply(c,&reply);
五、結語
本文介紹了hiredis的基本和高級操作,給大家提供了一個高性能Redis客戶端的應用實例。希望本文讓大家對hiredis有更深刻地認識,並在實踐中得到運用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/157499.html