From 07eea46970759aba106f3db3f4bc24c518ab41de Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期二, 20 二月 2024 14:39:04 +0800
Subject: [PATCH] 库中新增更新单条缓存
---
cache/db.go | 18 +++++++++
cache/compare.go | 62 +++++++------------------------
main.go | 2
3 files changed, 33 insertions(+), 49 deletions(-)
diff --git a/cache/compare.go b/cache/compare.go
index ffaa428..d2e5b23 100644
--- a/cache/compare.go
+++ b/cache/compare.go
@@ -266,56 +266,22 @@
}
}
-// UpdateDbPersonsCache 鏇存柊缂撳瓨涓殑鍏ㄩ儴浜哄憳淇℃伅
-func UpdateDbPersonsCache() {
+// UpdateDbPersonsCacheById 鏇存柊缂撳瓨涓殑鍏ㄩ儴浜哄憳淇℃伅
+func UpdateDbPersonsCacheById(id string) {
var dbpApi DbPersons
- total, e := dbpApi.GetPersonTotal("")
- logger.Debugf("鎵�鏈夊簳搴撳叡鏈�%d鏉¤褰�", total)
- if e == nil && total > 0 {
- queryEachNum := *querynum
- qn := int(total) / *threadnum
- if *querynum < qn {
- queryEachNum = qn
+ info, err := dbpApi.GetPersonsCompareCacheById(id)
+ if err != nil {
+ logger.Debug(err)
+ return
+ }
+ if info.Tableid != "" {
+ Cmap.Lock()
+ defer Cmap.Unlock()
+ if _, ok := Cmap.Cam[info.Tableid]; !ok {
+ Cmap.Cam[info.Tableid] = shardmap.New(uint8(*threadnum))
}
- queryT := int(total) / queryEachNum
- if int(total)%queryEachNum > 0 {
- queryT++
- }
- temptime := time.Now()
- var wg sync.WaitGroup
-
- for i := 0; i < queryT; i++ {
- j := i * queryEachNum
- wg.Add(1)
- go func(qs int) {
- defer wg.Done()
- dbpersons, err := dbpApi.GetPersonsCompareCacheBase(j, queryEachNum)
- if err != nil {
- logger.Debug(err)
- return
- }
- logger.Debugf("鑾峰彇%d鏉′汉鍛樹俊鎭�", len(dbpersons))
- Cmap.Lock()
- tableId := ""
- for _, value := range dbpersons {
- tableId = value.Tableid
- if _, ok := Cmap.Cam[value.Tableid]; !ok {
- Cmap.Cam[value.Tableid] = shardmap.New(uint8(*threadnum))
- }
-
- Cmap.Cam[value.Tableid].Set(value.Id, value)
- }
-
- if len(dbpersons) != 0 {
- Cmap.Cam[tableId].Settime()
- }
-
- Cmap.Unlock()
-
- }(j)
- }
- wg.Wait()
- logger.Debug("搴曞簱浜哄憳缂撳瓨瀹屾垚鐢ㄦ椂:", time.Since(temptime))
+ Cmap.Cam[info.Tableid].Set(info.Id, info)
+ Cmap.Cam[info.Tableid].Settime()
}
}
diff --git a/cache/db.go b/cache/db.go
index f283c4b..c07cd80 100644
--- a/cache/db.go
+++ b/cache/db.go
@@ -126,3 +126,21 @@
}
return
}
+
+func (dbp *DbPersons) GetPersonsCompareCacheById(id string) (info *protomsg.Esinfo, err error) {
+ sql := "select id,faceFeature,tableId,enable from dbtablepersons where id = \"" + id + "\""
+ var p DbPersons
+ err = db.Raw(sql).First(&p).Error
+ if err != nil {
+ return nil, err
+ }
+ if p.FaceFeature != "" {
+ info = &protomsg.Esinfo{
+ Id: p.Id,
+ Tableid: p.TableId,
+ FaceFeature: p.FaceFeature,
+ Enable: int32(p.Enable),
+ }
+ }
+ return
+}
diff --git a/main.go b/main.go
index 0e2691d..f8800b5 100644
--- a/main.go
+++ b/main.go
@@ -131,7 +131,7 @@
if compareEvent.EventType == protomsg.CompareEventType_ReInitCache { //鍔犲叆闆嗙兢鍚庨噸鏂板垵濮嬪寲缂撳瓨
cache.ReInitDbTablePersonsCache()
} else if compareEvent.EventType == protomsg.CompareEventType_UpdateCache { //搴撲腑鏂板鏇存柊缂撳瓨
- cache.UpdateDbPersonsCache()
+ cache.UpdateDbPersonsCacheById(string(compareEvent.Payload))
}
} else {
logger.Debug("json unmarshal error")
--
Gitblit v1.8.0