From 88b1f1d1d14a8fe9e3dde2f363a89d821fc0e641 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期四, 26 九月 2024 20:19:49 +0800 Subject: [PATCH] code format --- cache/cache.go | 168 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 106 insertions(+), 62 deletions(-) diff --git a/cache/cache.go b/cache/cache.go index aee3708..91dd9df 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -20,53 +20,59 @@ PRE_DBTABLE = "dbTable_" ) -type CmapItem struct { +type AreaMapItem struct { sync.Mutex Area map[string]*shardmap.ShardMap } -var CacheMap *CmapItem +var CaptureDbMap *AreaMapItem +var RealNameDbMap = shardmap.New(uint8(*threadnum)) +var KeyPersonDbMap = shardmap.New(uint8(*threadnum)) + var doOnce sync.Once -func ReInitDbTablePersonsCache() { - CacheMap.Lock() - defer CacheMap.Unlock() - if CacheMap == nil { - CacheMap = &CmapItem{ - Area: make(map[string]*shardmap.ShardMap), - } - } - for tableId, _ := range CacheMap.Area { - delete(CacheMap.Area, tableId) - } - - initDbTablePersonsCache() -} - -func InitDbTablePersons() { +func InitCache() { doOnce.Do(func() { flag.Parse() - CacheMap = &CmapItem{ + CaptureDbMap = &AreaMapItem{ Area: make(map[string]*shardmap.ShardMap), } // 鍒濆鍖栨湭鍒嗙被, 娌℃湁灏忓尯id鐨勬。妗� - CacheMap.Area[Unfiled] = shardmap.New(uint8(*threadnum)) + CaptureDbMap.Area[Unfiled] = shardmap.New(uint8(*threadnum)) }) initDbTablePersonsCache() + initRealNamePersonsCache() + initKeyPersonsCache() } +func ReInitDbTablePersonsCache() { + CaptureDbMap.Lock() + defer CaptureDbMap.Unlock() + + if CaptureDbMap == nil { + CaptureDbMap = &AreaMapItem{ + Area: make(map[string]*shardmap.ShardMap), + } + } + for tableId, _ := range CaptureDbMap.Area { + delete(CaptureDbMap.Area, tableId) + } + + initDbTablePersonsCache() +} func initDbTablePersonsCache() { // 缂撳瓨搴曞簱涓殑鍏ㄩ儴浜哄憳淇℃伅 var dbpApi db.DbPersons total, e := dbpApi.GetPersonTotal("") - var psApi db.PersonStatus - accessAreas, _ := psApi.GetPersonAccessedAreas() + // 鏆傛椂鍘绘帀鍒拌灏忓尯杩囨护 + //var psApi db.PersonStatus + //accessAreas, _ := psApi.GetPersonAccessedAreas() - logger.Debugf("鎵�鏈夊簳搴撳叡鏈�%d鏉¤褰�", total) + logger.Debugf("鎶撴媿妗f搴撳叡鏈�%d鏉¤褰�", total) if e == nil && total > 0 { queryEachNum := *querynum qn := int(total) / *threadnum @@ -90,36 +96,68 @@ logger.Error(err) return } - logger.Debugf("鑾峰彇%d鏉′汉鍛樹俊鎭�", len(dbPersons)) - CacheMap.Lock() + logger.Debugf("eachNum:%d, 鑾峰彇%d鏉′汉鍛樹俊鎭�", queryEachNum, len(dbPersons)) + CaptureDbMap.Lock() areaId := "" for _, value := range dbPersons { areaId = value.AreaId // 娌℃湁灏忓尯id鐨勪汉鍛� if areaId == "" { - CacheMap.Area[Unfiled].Set(value.Id, value) - CacheMap.Area[Unfiled].Settime() + CaptureDbMap.Area[Unfiled].Set(value.Id, value) + CaptureDbMap.Area[Unfiled].Settime() continue } - for _, areaId := range accessAreas[value.Id] { - if _, ok := CacheMap.Area[areaId]; !ok { - CacheMap.Area[areaId] = shardmap.New(uint8(*threadnum)) - } - - CacheMap.Area[areaId].Set(value.Id, value) - CacheMap.Area[areaId].Settime() + //for _, areaId := range accessAreas[value.Id] { + if _, ok := CaptureDbMap.Area[areaId]; !ok { + CaptureDbMap.Area[areaId] = shardmap.New(uint8(*threadnum)) } + + CaptureDbMap.Area[areaId].Set(value.Id, value) + CaptureDbMap.Area[areaId].Settime() + //} } - CacheMap.Unlock() + CaptureDbMap.Unlock() }(j) } wg.Wait() - logger.Debug("搴曞簱浜哄憳缂撳瓨瀹屾垚鐢ㄦ椂:", time.Since(temptime)) + logger.Debug("鎶撴媿妗f搴撲汉鍛樼紦瀛樺畬鎴愮敤鏃�:", time.Since(temptime)) + + for k, v := range CaptureDbMap.Area { + logger.Debugf("Cache area %s item len %d ", k, v.GetLen()) + } } +} + +func initRealNamePersonsCache() { + var dbApi db.Layouts + dbPersons, err := dbApi.GetRealNamePersonList() + if err != nil { + logger.Error("init real-name persons error,", err.Error()) + } + + for _, value := range dbPersons { + RealNameDbMap.Set(value.Id, value) + } + + logger.Debugf("甯镐綇浜哄彛鍏辨湁%d鏉¤褰�", len(dbPersons)) +} + +func initKeyPersonsCache() { + var dbApi db.Layouts + dbPersons, err := dbApi.GetKeyPersonList() + if err != nil { + logger.Error("init real-name persons error,", err.Error()) + } + + for _, value := range dbPersons { + KeyPersonDbMap.Set(value.Id, value) + } + + logger.Debugf("閲嶇偣浜哄憳鍏辨湁%d鏉¤褰�", len(dbPersons)) } // UpdateDbPersonsCacheById 鏇存柊缂撳瓨涓殑鍏ㄩ儴浜哄憳淇℃伅 @@ -130,22 +168,28 @@ logger.Error(err) return } - if info.AreaId != "" { - CacheMap.Lock() - defer CacheMap.Unlock() - if _, ok := CacheMap.Area[info.AreaId]; !ok { - CacheMap.Area[info.AreaId] = shardmap.New(uint8(*threadnum)) + if info != nil && info.AreaId != "" { + if _, ok := CaptureDbMap.Area[info.AreaId]; !ok { + CaptureDbMap.Lock() + defer CaptureDbMap.Unlock() + CaptureDbMap.Area[info.AreaId] = shardmap.New(uint8(*threadnum)) } - CacheMap.Area[info.AreaId].Set(info.Id, info) - CacheMap.Area[info.AreaId].Settime() + CaptureDbMap.Area[info.AreaId].Set(info.Id, info) + CaptureDbMap.Area[info.AreaId].Settime() + } +} + +func DeleteDbPersonsCacheById(id string) { + for key, _ := range CaptureDbMap.Area { + CaptureDbMap.Area[key].Del(id) } } func RealTimeAddPersonInfoToCache(tableId string, id string, faceFeature string, enable int32, carNo string) { - CacheMap.Lock() - defer CacheMap.Unlock() - if _, ok := CacheMap.Area[tableId]; !ok { - CacheMap.Area[tableId] = shardmap.New(uint8(*threadnum)) + CaptureDbMap.Lock() + defer CaptureDbMap.Unlock() + if _, ok := CaptureDbMap.Area[tableId]; !ok { + CaptureDbMap.Area[tableId] = shardmap.New(uint8(*threadnum)) } var ei = protomsg.Esinfo{ Id: id, @@ -154,16 +198,16 @@ Enable: enable, CarNo: carNo, } - CacheMap.Area[tableId].Set(id, &ei) + CaptureDbMap.Area[tableId].Set(id, &ei) logger.Debug("id:", id, ",tableId:", ",len(faceFeature):", len(faceFeature), ",tableId:", tableId, ",enable:", enable) } func RealTimeDelPersonFromCache(tableId string, id string) { logger.Debug("DelPersonFromCache,tableId:", tableId, ",id:", id) - CacheMap.Lock() - defer CacheMap.Unlock() - if _, ok := CacheMap.Area[tableId]; ok { - CacheMap.Area[tableId].Del(id) + CaptureDbMap.Lock() + defer CaptureDbMap.Unlock() + if _, ok := CaptureDbMap.Area[tableId]; ok { + CaptureDbMap.Area[tableId].Del(id) logger.Debug("DelPerson ok success") } else { logger.Error("tableId:", tableId, " not exist") @@ -172,27 +216,27 @@ func RealTimeDelTable(tableId string) { logger.Debug("RealTimeDelTable tableId:", tableId) - CacheMap.Lock() - defer CacheMap.Unlock() + CaptureDbMap.Lock() + defer CaptureDbMap.Unlock() - if dtM, ok := CacheMap.Area[PRE_DBTABLE]; ok { + if dtM, ok := CaptureDbMap.Area[PRE_DBTABLE]; ok { dtM.Del(tableId) } - if _, ok := CacheMap.Area[tableId]; ok { - delete(CacheMap.Area, tableId) + if _, ok := CaptureDbMap.Area[tableId]; ok { + delete(CaptureDbMap.Area, tableId) } } // 浣垮簳搴撶敓鏁�,灏嗗簳搴撲腑鐨勬墍鏈夌敓鏁堢姸鎬佺殑浜虹壒寰佹坊鍔犲埌缂撳瓨 func RealTimeUpdateTable(tableId string, enable int32) { logger.Debug("RealTimeUpdateTable tableId:", tableId, ",enable:", enable) - CacheMap.Lock() - defer CacheMap.Unlock() + CaptureDbMap.Lock() + defer CaptureDbMap.Unlock() - if _, ok := CacheMap.Area[PRE_DBTABLE]; !ok { - CacheMap.Area[PRE_DBTABLE] = shardmap.New(uint8(*threadnum)) + if _, ok := CaptureDbMap.Area[PRE_DBTABLE]; !ok { + CaptureDbMap.Area[PRE_DBTABLE] = shardmap.New(uint8(*threadnum)) } - CacheMap.Area[PRE_DBTABLE].Set(tableId, enable == 1) + CaptureDbMap.Area[PRE_DBTABLE].Set(tableId, enable == 1) } func UpdateCache(changeMsg *protomsg.EsPersonCacheChange) { -- Gitblit v1.8.0