最近在做一個測試回歸的係統,Server這邊需要在每個Test執行的時候為它保留相關的數據,待測試結束後,刪掉這些數據。
也就是這個數據隻是臨時的,一般一次測試用例大概就幾分種,因此單挑數據的存在時間非常短。所以想要選用Redis做數據存儲。
之前沒有使用Key-Value數據存儲的經驗,我這邊簡單構想的單挑數據結構如下:
{ sessionId: 123454, gloablData: {}, // 在全局维持的数据 testWins: [ { winId: 123, parentWinId: 123, stats: 'running', testResult: {} } ] }
其中testWinds
為測試用所有可能會出現的窗口(窗口其實為瀏覽器窗口,這個可以無視),然後會為每個窗口記錄信息,然後每個窗口有自己的子測試結果testResult
,是一個複雜數據(但是可以用JSON字符串來儲存,因為Server對它的具體內容不關心,輸出給需要的接口就行了),globalData也一樣,server不關心,設置成JSON字符串
但是查看Redis文檔,發現Redis貌似無法構建這麼複雜的數據結構。
因此針對這樣的需求,該如何設置這個數據庫的結構?
我這邊的簡單設置是這樣的:
對於每次測試:
有一條儲存globalData:
session_id:globalData
和多條儲存testWin數據:
session_id:testWind_id
其中globalData由於我這邊的Server不關心也不會做查詢,因此隻保存JSON字符串,testResult也一樣,這樣的話,貌似其實就兩種類型:
session_id:testWind_id: { winId: 123, parentWindId: 123, stat: 'running', testResult: JSONString } session_id:globalData: JSONString
迷茫2017-04-21 10:59:28
儲存和使用可以用物件封裝。
針對你的情況,我會如此存。
Key : "session:123454:globalData" Value: hash 這裡存屬性hash. (hget, hset)
Key : "sesison:123454:testWins" Value: list 儲存 test wins' ids
Key : "session:123454:testWins:win_id" Value: hash 這裡存wins屬性hash,也就是你json串的東西。
儲存這樣,使用還是要用物件封裝起來