redisDB數(shù)據(jù)持久化方案
基于redis和mysql的數(shù)據(jù)持久化方案
redis運(yùn)行時(shí)連接數(shù)據(jù)庫(kù) cache失效時(shí)同步讀mysql, 數(shù)據(jù)修改時(shí)候通過(guò)消息隊(duì)列通知DB線程寫(xiě)mysql reids.conf增加幾個(gè)配置選項(xiàng) mysql_host
mysql_port
mysql_user
mysql_pwd
mysql_dbname
persistence_mmap_file: 消息列隊(duì)指定的mmap映射文件
write_thread_num 寫(xiě)DB線程數(shù)
對(duì)key的命名有規(guī)范 "tablename_ID(int)"形式, 如果僅僅是 "tablename" 則系統(tǒng)解析的時(shí)候ID默認(rèn)為0 例如 “user_1” 系統(tǒng)會(huì)自動(dòng)對(duì)應(yīng)"user"表的ID為1的行 “user_0” 或者 "user" 系統(tǒng)會(huì)自動(dòng)對(duì)應(yīng)"user"表的ID為0的行
目前支持 string, list, zset, 以及incr 格式, mysql表結(jié)構(gòu)不需要自己定義,系統(tǒng)自動(dòng)映射 消息隊(duì)列采用無(wú)鎖隊(duì)列, 支持mmap與malloc兩種方式, 采用mmap方式理論上在程序意外死掉的時(shí)候不丟失隊(duì)列數(shù)據(jù) 經(jīng)過(guò)壓力測(cè)試, 修改前和修改后的redis性能損耗為10% - 20%, 后期會(huì)考慮再進(jìn)行優(yōu)化 另外因?yàn)槭峭阶xDB, 如果大量的cache失效會(huì)帶來(lái)嚴(yán)重的io阻塞, 從而影響性能, 后期考慮加入配置選項(xiàng)在redis啟動(dòng)以后主動(dòng)從db恢復(fù)數(shù)據(jù)
基于redis 2.6.16修改
