nginx共享記憶體是利用mmap將內容儲存在記憶體中以及使用自旋鎖。當master啟動的時候,根據相應的指令去初始化共享記憶體。利用共享記憶體實現乙個輕量級的k/v系統。
根據nginx配置檔案來動態的新增共享記憶體。開源專案位址
//獲取k/v
int ngx_shm_dict_handler_get(ngx_shm_zone_t* zone_t,ngx_str_t *key, ngx_str_t *value,uint32_t *exptime);
//設定k/v
int ngx_shm_dict_handler_set(ngx_shm_zone_t* zone_t,ngx_str_t *key, ngx_str_t *value,uint32_t exptime);
//設定key過期時間
int ngx_shm_dict_handler_set_exptime(ngx_shm_zone_t* zone_t, ngx_str_t* key, uint32_t exptime);
//刪除k/v
int ngx_shm_dict_handler_delete(ngx_shm_zone_t* zone_t,ngx_str_t *key);
//計數器k/v
int ngx_shm_dict_handler_incr_int(ngx_shm_zone_t* zone_t,ngx_str_t *key, int count,uint32_t exptime,int64_t* res);
//清空共享記憶體
Linux共享記憶體及共享記憶體API
共享記憶體區是最快的ipc 程序間通訊 形式。用共享記憶體從伺服器拷貝檔案資料到客戶端 共享記憶體基本api include include 1.int shmget key t key,size t size,int shm 功能 用來建立共享記憶體 key 是這個共享記憶體段的名字 size 共...
Linux (程序間通訊)共享記憶體剖析
在linux中,每個程序都有屬於自己的程序控制塊 pcb 和位址空間 addr space 並且都有乙個與之對應的頁表,負責將程序的虛擬位址與實體地址進行對映,通過記憶體管理單元 mmu 進行管理。兩個不同的虛擬位址通過頁表對映到物理空間的同一區域,它們所指向的這塊區域即共享記憶體。key 共享識別...
Nginx原始碼剖析 記憶體池結構ngx pool t
struct ngx pool s ngx pool data t 結構 該結構就是包含了操作該記憶體池的資料的一些指標 typedef struct ngx pool data t ngx pool large t 結構 表示大塊記憶體 struct ngx pool large s ngx po...