部分代碼中函數(shù)名一致,導(dǎo)致編譯報(bào)錯(cuò),因此需要為對(duì)應(yīng)的函數(shù)加static修飾,報(bào)錯(cuò)如圖 4-7所示。
圖 4-7 函數(shù)重定義錯(cuò)誤
由于SylixOS默認(rèn)棧空間大小無法滿足服務(wù)器對(duì)棧空間的需求,因此修改棧空間大小,具體代碼如程序清單 4-2所示。
程序清單 4-2 設(shè)置棧空間大小
int main(intargc,char **argv) {
LW_CLASS_THREADATTR threadAttr;
LW_HANDLE hThreadId;
__GiArgc = argc;
__GppcArgv = argv;
Lw_ThreadAttr_Build(&threadAttr,
350 * LW_CFG_KB_SIZE,
LW_PRIO_NORMAL,
LW_OPTION_THREAD_STK_CHK,
LW_NULL);
hThreadId = Lw_Thread_Create(t_server, redisServer, &threadAttr, LW_NULL);
if (hThreadId ==LW_OBJECT_HANDLE_INVALID) {
return (PX_ERROR);
}
Lw_Thread_Join(hThreadId,NULL);
return ERROR_NONE;
}
SylixOS下rename的實(shí)現(xiàn)是用新文件直接替換原文件,由于原文件已經(jīng)存在可能導(dǎo)致替換失敗,因此在rename前需要先刪除原文件,具體代碼如程序清單 4-3所示。
程序清單 4 3 rename的使用
unlink(filename);
if (rename(tmpfile,filename) == -1) {
serverLog(LL_WARNING,Error movingtempappend only file on the final destination: %s,strerror(errno));
unlink(tmpfile);
return C_ERR;
}
將工程文件內(nèi)的fork通過posix_spawn函數(shù)進(jìn)行功能替換,替換完成后編譯工程,生成服務(wù)器的可執(zhí)行程序即可。
4.2 動(dòng)態(tài)庫工程創(chuàng)建
創(chuàng)建libredis動(dòng)態(tài)庫工程,刪除libredis.c文件,導(dǎo)入hiredis文件夾,工程如圖 4-8所示。
圖 4-8 動(dòng)態(tài)庫工程
鏈接cextern動(dòng)態(tài)庫,在專家模式下修改源文件和頭文件目錄,如圖 4-9所示。
圖 4-9 源文件和頭文件路徑
編譯完成即可。
5. Redis的使用
運(yùn)行服務(wù)器,redis.conf為服務(wù)器配置文件,可對(duì)服務(wù)器功能進(jìn)行配置,運(yùn)行服務(wù)器如圖 5-1所示。
圖 5-1 運(yùn)行Redis服務(wù)器
運(yùn)行測(cè)試程序,測(cè)試Redis的API功能是否正常,運(yùn)行結(jié)果顯示功能正常,具體現(xiàn)象如圖 5-2所示。
圖 5-2 測(cè)試用例運(yùn)行結(jié)果
6. 參考資料
官網(wǎng):
https://redis.io/
博客:
http://blog.csdn.net/kingqizhou/article/details/8104693
文檔:
《Redis命令參考手冊(cè)》
《Redis實(shí)戰(zhàn)》
更多關(guān)于云服務(wù)器,域名注冊(cè),虛擬主機(jī)的問題,請(qǐng)?jiān)L問三五互聯(lián)官網(wǎng):m.shinetop.cn