添加dbm的缓存及清理机制
This commit is contained in:
parent
5e184badca
commit
defbafd9d6
|
|
@ -7,11 +7,15 @@ import (
|
||||||
"gorm.io/driver/sqlite"
|
"gorm.io/driver/sqlite"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"log"
|
"log"
|
||||||
|
"sync"
|
||||||
"videoplayer/proto"
|
"videoplayer/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
var DB *gorm.DB
|
var DB *gorm.DB
|
||||||
|
|
||||||
|
var DBMMap map[uint]*proto.DBValue
|
||||||
|
var DBMMapRWMutex = &sync.RWMutex{} //dbm日志
|
||||||
|
|
||||||
func Init() error {
|
func Init() error {
|
||||||
var db *gorm.DB
|
var db *gorm.DB
|
||||||
var err error
|
var err error
|
||||||
|
|
|
||||||
1
main.go
1
main.go
|
|
@ -232,6 +232,7 @@ func myTask() {
|
||||||
RunGeneralCron()
|
RunGeneralCron()
|
||||||
service.ShellWillRunFromServer()
|
service.ShellWillRunFromServer()
|
||||||
service.SyncTokenSecretFromUserCenter()
|
service.SyncTokenSecretFromUserCenter()
|
||||||
|
service.DelDBMMap() //定时处理DBMMap中的数据
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,13 @@ var SigningKeyIsValid = true // 是否有效的签名密钥
|
||||||
const (
|
const (
|
||||||
MYSQL_USER = "video_t2"
|
MYSQL_USER = "video_t2"
|
||||||
MYSQL_DB = "video_t2"
|
MYSQL_DB = "video_t2"
|
||||||
MYSQL_PASSWORD = "2t2SKHmWEYj2xFKF"
|
MYSQL_PASSWORD = "2fdreYj2xFKF"
|
||||||
MYSQL_PORT = "3306"
|
MYSQL_PORT = "3306"
|
||||||
MYSQL_HOST = "127.0.0.1"
|
MYSQL_HOST = "127.0.0.1"
|
||||||
MYSQL_DSN = MYSQL_USER + ":" + MYSQL_PASSWORD + "@tcp(" + MYSQL_HOST + ":" + MYSQL_PORT + ")/" + MYSQL_DB + "?charset=utf8mb4&parseTime=True&loc=Local"
|
MYSQL_DSN = MYSQL_USER + ":" + MYSQL_PASSWORD + "@tcp(" + MYSQL_HOST + ":" + MYSQL_PORT + ")/" + MYSQL_DB + "?charset=utf8mb4&parseTime=True&loc=Local"
|
||||||
|
|
||||||
REDIS_ADDR = "127.0.0.1:6379"
|
REDIS_ADDR = "127.0.0.1:6379"
|
||||||
REDIS_PASSWORD = "lj502138"
|
REDIS_PASSWORD = "lgybvueiogvter"
|
||||||
REIDS_DB = 2
|
REIDS_DB = 2
|
||||||
|
|
||||||
TOKEN_SECRET = "mfjurnc_32ndj9dfhj"
|
TOKEN_SECRET = "mfjurnc_32ndj9dfhj"
|
||||||
|
|
@ -43,6 +43,8 @@ const (
|
||||||
|
|
||||||
// 以下是文件上传的配置
|
// 以下是文件上传的配置
|
||||||
FILE_BASE_DIR = "/home/lijun/file/"
|
FILE_BASE_DIR = "/home/lijun/file/"
|
||||||
|
|
||||||
|
DBMMap_Max_Keep_Time = 10 * 60 //DBMap中的数据最大保持时间,10min
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
||||||
|
|
@ -111,3 +111,8 @@ type DBTableAttribute struct {
|
||||||
ColumnName string `json:"column_name"` // 列名
|
ColumnName string `json:"column_name"` // 列名
|
||||||
ColumnType string `json:"column_type"` // 列类型
|
ColumnType string `json:"column_type"` // 列类型
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DBValue struct {
|
||||||
|
LastUserTime int64 `json:"last_user_time"`
|
||||||
|
Value *gorm.DB `json:"value"`
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"videoplayer/dao"
|
"videoplayer/dao"
|
||||||
"videoplayer/proto"
|
"videoplayer/proto"
|
||||||
|
"videoplayer/worker"
|
||||||
)
|
)
|
||||||
|
|
||||||
func RunSQL(req *proto.RunSQLRequest) (*proto.SQLResult, error) {
|
func RunSQL(req *proto.RunSQLRequest) (*proto.SQLResult, error) {
|
||||||
|
|
@ -37,6 +38,16 @@ func RunSQL(req *proto.RunSQLRequest) (*proto.SQLResult, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetGORMDBObject(dbmInfo *proto.DBManage) (db_ *gorm.DB, err error) {
|
func GetGORMDBObject(dbmInfo *proto.DBManage) (db_ *gorm.DB, err error) {
|
||||||
|
dao.DBMMapRWMutex.RLock()
|
||||||
|
defer dao.DBMMapRWMutex.RUnlock()
|
||||||
|
if dao.DBMMap != nil {
|
||||||
|
dbValue := dao.DBMMap[dbmInfo.ID]
|
||||||
|
if dbValue != nil {
|
||||||
|
dbValue.LastUserTime = worker.GetCurrentTimestamp()
|
||||||
|
return dbValue.Value, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch dbmInfo.DB_Type {
|
switch dbmInfo.DB_Type {
|
||||||
case proto.DB_TYPE_MYSQL: // MySQL
|
case proto.DB_TYPE_MYSQL: // MySQL
|
||||||
dsn := dbmInfo.DB_User + ":" + dbmInfo.DB_Password + "@tcp(" + dbmInfo.DB_IP + ":" + strconv.Itoa(int(dbmInfo.DB_Port)) + ")/" + dbmInfo.DB_NAME + "?charset=utf8mb4&parseTime=True&loc=Local"
|
dsn := dbmInfo.DB_User + ":" + dbmInfo.DB_Password + "@tcp(" + dbmInfo.DB_IP + ":" + strconv.Itoa(int(dbmInfo.DB_Port)) + ")/" + dbmInfo.DB_NAME + "?charset=utf8mb4&parseTime=True&loc=Local"
|
||||||
|
|
@ -53,6 +64,13 @@ func GetGORMDBObject(dbmInfo *proto.DBManage) (db_ *gorm.DB, err error) {
|
||||||
default:
|
default:
|
||||||
err = errors.New("unsupported database type")
|
err = errors.New("unsupported database type")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dao.DBMMapRWMutex.Lock()
|
||||||
|
defer dao.DBMMapRWMutex.Unlock()
|
||||||
|
var dbValue *proto.DBValue
|
||||||
|
dbValue.Value = db_
|
||||||
|
dbValue.LastUserTime = worker.GetCurrentTimestamp()
|
||||||
|
dao.DBMMap[dbmInfo.ID] = dbValue
|
||||||
return db_, err
|
return db_, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -218,3 +236,14 @@ func GetDBTableDesc(req *proto.GetDBTableDescReq, userId int) (*proto.SQLResult,
|
||||||
//}
|
//}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DelDBMMap() {
|
||||||
|
dao.DBMMapRWMutex.Lock()
|
||||||
|
defer dao.DBMMapRWMutex.Unlock()
|
||||||
|
cur := worker.GetCurrentTimestamp()
|
||||||
|
for k, v := range dao.DBMMap {
|
||||||
|
if cur-v.LastUserTime < proto.DBMMap_Max_Keep_Time {
|
||||||
|
delete(dao.DBMMap, k) //删除
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue