鍍金池/ 問(wèn)答/人工智能  Java  數(shù)據(jù)庫(kù)/ 邏輯上是樹(shù)型結(jié)構(gòu)的表緩存方案

邏輯上是樹(shù)型結(jié)構(gòu)的表緩存方案

目前有一張表,有id 和parentid2個(gè)字段,通過(guò)這兩個(gè)字段關(guān)系的映射,整個(gè)表邏輯上是一棵樹(shù)?,F(xiàn)在想把這張表的數(shù)據(jù)緩存到redis中。
問(wèn)題,如何設(shè)計(jì)緩存結(jié)構(gòu),支持常用的查詢。(比如,全國(guó)的街道,鎮(zhèn),縣,省這樣的數(shù)據(jù))

回答
編輯回答
魚梓

不太了解你的具體場(chǎng)景, 另外假設(shè)你是 B/S

我之前的做法是, 直接生成一個(gè)js
服務(wù)端只驗(yàn)證數(shù)據(jù)就可以了

我能想到的方案

保存相鄰兩級(jí)的 id的 單向 集合關(guān)系

比如

湖北省.id : [武漢市.id, 襄樊市.id, ...]
.....
武漢市.id : [洪山區(qū).id, 東湖高新區(qū).id, ...]

//省市區(qū)三個(gè)級(jí)別的話

//一共就是 34(省級(jí)行政區(qū)) + 294(地級(jí)市) 條記錄

然后驗(yàn)證一個(gè)省市區(qū)串是否正確 只需要redis兩次請(qǐng)求

ps: 前提條件是你傳遞上來(lái)的是 省-市-區(qū) 而不是 僅僅一個(gè) 區(qū)

2018年2月6日 19:14