同步的api介面
rediscontext *redisconnect(const char *ip, int port);
void *rediscommand(rediscontext *c, const char *format, ...);
void freereplyobject(void *reply);
1)建立連線
rediscontext *c = redisconnect("127.0.0.1", 6379);
if (c != null && c->err) {
printf("error: %s\n", c->errstr);
// handle error
redisconnect函式用來建立乙個叫rediscontext的東西,它包含了連線相關的資訊
它裡面有個err欄位,0表示正常,其他表示出錯了!通過errstr欄位可以知曉錯誤資訊
2)執行命令
reply = rediscommand(context, "set key value");
reply = rediscommand(context, "set key %s", value);
reply = rediscommand(context, "set key %b", value, (size_t) valuelen);
reply = rediscommand(context, "set key:%s %s", myid, value);
rediscommand的呼叫格式類似printf函式,上面的第二條呼叫語句的作用在於
輸入二進位制格式的value內容,其後必須表明二進位制的位元組長度!
3)rediscommand函式返回乙個東西叫redisreply,我們需要通過判斷它的type欄位
來知道返回了具體什麼樣的內容:
redis_reply_status 表示狀態,內容通過str欄位檢視,字串長度是len欄位
redis_reply_error 表示出錯,檢視出錯資訊,如上的str,len欄位
redis_reply_integer 返回整數,從integer欄位獲取值
redis_reply_nil 沒有資料返回
redis_reply_string 返回字串,檢視str,len欄位
redis_reply_array 返回乙個陣列,檢視elements的值(陣列個數),通過
element[index]的方式訪問陣列元素,每個陣列元素是
乙個redisreply物件的指標
4)另外有乙個類似的函式,批量執行命令:
void *rediscommandar**(rediscontext *c, int argc,
const char **ar**, const size_t *ar**len);
5)redisreply使用完畢後,需要使用函式freereplyobject進行釋放銷毀
void redisfree(rediscontext *c)的作用是斷開連線,並釋放rediscontext的內容
6)rediscommand的函式執行流程說明:
a.格式化redis command
b.格式化後的命令內容放入rediscontext的輸出緩衝區
c.呼叫redisgetreply函式執行命令,得到結果
7)管道的使用方式:
a.填入需要執行的命令
void redisappendcommand(rediscontext *c, const char *format, ...);
void redisappendcommandar**(rediscontext *c, int argc,
const char **ar**, const size_t *ar**len);
b.獲取命令的輸出結果
int redisgetreply(rediscontext *c, void **reply);
c.釋放輸出結果
void freereplyobject(void *reply);
例子:redisreply *reply = null;
redisappendcommand(context,"set key1 value");
redisappendcommand(context,"get key2");
redisgetreply(context,&reply); // reply for set
freereplyobject(reply);
redisgetreply(context,&reply); // reply for get
freereplyobject(reply);
訂閱模式:
reply = rediscommand(context,"subscribe test");
freereplyobject(reply);
while(redisgetreply(context,&reply) == redis_ok) {
// consume message
freereplyobject(reply);
8)redisreply返回結果處理:
redis_ok 正常
redis_err_io io讀/寫出現異常,通過errno檢視原因
redis_err_eof 伺服器關閉了鏈結,讀結束
redis_err_protocol 分析redis協議內容出錯
edis_err_other 其他未知的錯誤
上述錯誤型別都可以通過redisreply的errstr欄位檢視簡短的描述
c)非同步api(非同步api的使用方式和同步api差不多,在這兒列出不同的函式吧)
1.連線redis伺服器
redisasynccontext *c = redisasyncconnect("127.0.0.1", 6379);
if (c->err) {
printf("error: %s\n", c->errstr);
// handle error
2.設定連線、斷開的鉤子函式
int redisasyncsetconnectcallback(redisasynccontext *ac,
redisconnectcallback *fn);
int redisasyncsetdisconnectcallback(redisasynccontext *ac,
redisdisconnectcallback *fn);
3.插入命令資訊
int redisasynccommand(
redisasynccontext *ac, rediscallbackfn *fn, void *privdata,
const char *format, ...);
int redisasynccommandar**(
redisasynccontext *ac, rediscallbackfn *fn, void *privdata,
int argc, const char **ar**, const size_t *ar**len);
獲取命令輸出和同步api相同
4.關閉連線
void redisasyncdisconnect(redisasynccontext *ac);
d)輔助api
下面的api主要用於其他程式語言繫結的術後,可以讀取分析資料
redisreader *redisreadercreate(void);
void redisreaderfree(redisreader *reader);
int redisreaderfeed(redisreader *reader, const char *buf, size_t len);
int redisreadergetreply(redisreader *reader, void **reply);
同步複製JOB說明
此儲存過程在分發伺服器的任何資料庫上執行。heartbeat interval heartbeat interval 是 程式在不記錄進度訊息的情況下可以執行的最長分鐘數。heartbeat interval 的資料型別為 int,預設值為 10 分鐘。返回 值 sp replication age...
eclipse svn 與資源庫同步 符號說明
eclipse svn同步說明符介紹 右鍵 team 與資源庫同步,顯示的檔案上都有指示符 灰色向右箭頭 本地修改了 灰色向右箭頭且中間有白色減號 本地刪除了,伺服器未刪除 灰色向右且中間有個加號的箭頭 本地比svn上多出的檔案 藍色向左箭頭 svn上修改過 藍色向左且中間有個加號的箭頭 svn上比...
eclipse svn 與資源庫同步 符號說明
一 右鍵 team 與資源庫同步,顯示的檔案上都有指示符 a.灰色向右箭頭 本地修改了 灰色向右箭頭且中間有白色減號 本地刪除了,伺服器未刪除 灰色向右且中間有個加號的箭頭 本地比svn上多出的檔案 b.藍色向左箭頭 svn上修改過 藍色向左且中間有個加號的箭頭 svn上比本地多出的檔案 藍色向左且...