溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java重寫redis服務端

發(fā)布時間:2020-06-16 14:49:07 來源:網(wǎng)絡 閱讀:345 作者:wx5c39a5f83f706 欄目:關系型數(shù)據(jù)庫

背景

最近研究了下redis的協(xié)議、持久化策略以及單線程模型,突然覺得和java很搭配。源碼請用力戳這里

目的

鑒于redis是c編寫,java的同學讀起來比較費力,所以寫java版。讓更多的開發(fā)者理解高性能設計的精髓,同時加深底層傳輸,存儲,索引的認知。

特征

1. 兼容大多數(shù)redis原生協(xié)議
2. 兼容redis桌面客戶端0.9+
3. db分區(qū)隔離和事務機制
4. 高級特性:如阻塞隊列,發(fā)布訂閱
5. 數(shù)據(jù)持久采用jdk原生MappedByteBuffer同步刷盤(虛擬內(nèi)存技術)
6. key,value存儲隔離,僅key空間占虛擬機內(nèi)存,而value只在使用時才加載,所以優(yōu)于redis
7. 兼容jedis,spring-data-redis,spring-boot-data等常用redis java客戶端工具

基準測試

單機(4核8g),1000連接,隨機value set,tps大致在3W+
參考下圖,16379為jredis,7003為redis
java重寫redis服務端
java重寫redis服務端

存儲設計

jredis文件結構

默認8個分區(qū),相當于8個db,數(shù)據(jù)在程序運行時同步寫入,重啟會自動讀取恢復數(shù)據(jù)到內(nèi)存。
java重寫redis服務端

db文件內(nèi)容

分為一個key區(qū)+三個value類型區(qū),對應磁盤文件結構為:
java重寫redis服務端

文件詳細介紹

key區(qū)加載所有值類型的key
value區(qū)僅加載同類型的值
java重寫redis服務端

緩沖區(qū)設計

線性存儲,自定義消息格式,消息定長,一個單元最大存儲1024字節(jié),文件寫滿暫不支持動態(tài)擴容。
java重寫redis服務端

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI