Nginx共享記憶體剖析及開源專案分享

2021-10-04 01:12:51 字數 2526 閱讀 1368

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...