新聞中心
無限級團隊結(jié)構(gòu)對于企業(yè)來說無論在行政架構(gòu)設(shè)計、部門管控等,都有著重要的作用。Redis結(jié)合NoSQL的特性,可以靈活的構(gòu)建出無限級團隊結(jié)構(gòu),下面就以Redis做示范。

成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、重慶網(wǎng)站建設(shè)公司、微信開發(fā)、小程序開發(fā)、集團成都企業(yè)網(wǎng)站定制等服務(wù)項目。核心團隊均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗,服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都三輪攪拌車等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗,同時也獲得了客戶的一致表揚!
#### 1. 搭建Redis數(shù)據(jù)結(jié)構(gòu)
要想建立無限級團隊結(jié)構(gòu),那么Redis里面儲存的應(yīng)該是一個樹形結(jié)構(gòu),所以首先我們需要做的是搭建這樣的數(shù)據(jù)結(jié)構(gòu)。這里就使用Redis的HASH來儲存信息,我定義一個名為TeamStruct的HASH,里面的Key-Value的形式為:
`mapping = {
‘1’:{‘name’: ‘Jack’, ‘PARENT’: 0},
‘2’:{‘name’: ‘Tom’, ‘parent’: 1},
‘3’:{‘name’: ‘Kitty’, ‘parent’: 1},
‘4’:{‘name’: ‘Tony’, ‘parent’: 2}
}`
#### 2. 通過HGETALL獲取結(jié)構(gòu)
既然團隊架構(gòu)的本質(zhì)就是一個樹狀結(jié)構(gòu),所以這種數(shù)據(jù)的索引也就簡單了,可以使用HGETALL操作來從Redis服務(wù)器獲取指定的結(jié)構(gòu)信息:
import redis
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
# 獲取整個TeamStruct結(jié)構(gòu)
result = r.hgetall('TeamStruct')
print(result)
{
'1':'{"name": "Jack", "parent": 0}',
'2':'{"name": "Tom", "parent": 1}',
'3':'{"name": "Kitty", "parent": 1}',
'4':'{"name": "Tony", "parent": 2}'
}
#### 3. 通過循環(huán)、字典索引構(gòu)建樹形結(jié)構(gòu)
既然用Redis可以可以獲取一個完整的架構(gòu)信息,那么就可以根據(jù)這個信息構(gòu)建出一顆樹狀結(jié)構(gòu)。通過這種方式可以給用戶提供較加靈活的功能,例如新增、調(diào)整、刪除指定的結(jié)構(gòu)信息等。
下面就是實現(xiàn)的索引步驟:
# 定義一個完整團隊結(jié)構(gòu)的字典
team_tree = {}
# 將獲取的結(jié)構(gòu)信息存入一個臨時的字典
temp = {k: eval(v) for k,v in result.items()}
# 遍歷temp字典,構(gòu)建完整結(jié)構(gòu)字典
for k, v in temp.items():
# 判斷是否有父級團隊
if v['parent'] > 0:
team_tree[k] = temp[k]
# 判斷父級團隊結(jié)構(gòu)是否存在,如果存在就把該節(jié)點歸入父級團隊
if v['parent'] in team_tree.keys():
if 'children' not in team_tree[v['parent']]:
team_tree[v['parent']]['children'] = [k]
else:
team_tree[v['parent']]['children'].append(k)
else:
parent_node = {k: team_tree[v['parent']]}
if 'children' not in parent_node[v['parent']]:
parent_node[v['parent']]['children'] = [k]
else:
parent_node[v['parent']]['children'].append(k)
team_tree[v['parent']] = parent_node
else:
# 只有頂級節(jié)點沒有父級
team_tree[k] = temp[k]
就得到了一個包含無窮級團隊結(jié)構(gòu)的完整樹形:
`{
‘1’: {
‘name’: ‘Jack’,
‘parent’: 0,
‘children’: [
‘2’,
‘3’
]
},
‘2’: {
‘name’: ‘Tom’,
‘parent’: 1,
‘children’: [
‘4’
]
},
‘3’: {
‘name’: ‘Kitty’,
‘parent’: 1,
‘children’: []
},
‘4’: {
‘name’: ‘Tony’,
‘parent’: 2,
‘children’: []
}
}`
將字典重新放回Redis中,這樣就完成了一個從零到完整無限級團隊結(jié)構(gòu)的構(gòu)建。 Redis整合NoSQL的特性讓無限級團隊結(jié)構(gòu)中的行政架構(gòu)設(shè)計、部門管控得到了很大的靈活性,能夠在限定的時間和空間內(nèi)構(gòu)建出最適合當(dāng)時項目的結(jié)構(gòu)形式,也為業(yè)務(wù)系統(tǒng)的拓展留出了更大的空間。
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡稱香港主機/香港空間。香港虛擬主機特點是免備案空間開通就用, 創(chuàng)新互聯(lián)香港主機精選cn2+bgp線路訪問快、穩(wěn)定!
網(wǎng)頁名稱:結(jié)構(gòu)使用Redis靈活構(gòu)建無限級團隊結(jié)構(gòu)(redis設(shè)計無限級團隊)
網(wǎng)站URL:http://fisionsoft.com.cn/article/cdghcph.html


咨詢
建站咨詢
