簡單kv系統的測試

對於簡單的hash kv系統,數據的正確性該怎麼測試?是不是只需要先set後get就行了呢?
真實的應用具備以下一些特點:
1. 讀寫分離:讀和寫在不同的線程、進程,甚至是不同的機器
2. 寫少多讀:寫一次後會被讀到很多次,隨機讀
3. 多線程讀多線程寫
4. 最終一致性:寫成功後可能會返回舊值,但最終是新值, 對於啓用了replciation功能的qstore系統存在這種情況。
5. 讀和寫可能會失敗
6. 相同的key可能會寫多次,value也會變化
7. 數據有過期時間

通用的測試方法:

說明:
1. 當添加了一條新kv,先找到key所在的桶,然後對桶加鎖,然後保存該key的value的描述(起始位置、偏移量、操作類型、過期時間),並將該key加入到由key組成的循環隊列的頭部或尾部。
2. 當修改了一條kv,先找到key所在的桶,然後對桶加鎖,然後將對該key的value的最新描述信息追加到最後一次對該key操作的item之後。
3. 只讀循環隊列的第一個key,然後移動隊列頭部到下一個位置,從它所在的桶(也需要加鎖)找到最後一次操作的結果,如果不是刪除操作或者時間已過期,就可以做對比測試
4. 需要對key的操作做合併和清理,避免內存一直增加。
5. 如果對key的操作序列不關注的話,每個key只需要有1個item就可以了。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章