登录缓存储缓存

This commit is contained in:
tangping
2025-01-07 17:52:53 +08:00
parent b107b88800
commit 793a3d460a
2 changed files with 75 additions and 46 deletions

View File

@@ -7,9 +7,13 @@ import (
"sync"
)
// 用户缓存对象
var userMap = make(map[int64]*User)
var rwmu sync.RWMutex
var (
// 用户缓存对象
userMap = make(map[int64]*User)
rwmu sync.RWMutex
userAccountMap = make(map[string]*User)
rwmu2 sync.RWMutex
)
// GetUserByID 根据用户id获取用户信息
func GetUserByID(UserID int64) (*User, error) {
@@ -55,35 +59,61 @@ func AddUserCache(user *User) {
userMap[user.ID] = user
}
func GetUserByAccount(account string) (*User, error) {
rwmu2.RLock()
defer rwmu2.RUnlock()
//判断缓存是否存在
var user *User
ok := true
if user, ok = userAccountMap[account]; ok {
return user, nil
}
return nil, nil
}
func AddUserIdCache(user *User) {
rwmu2.Lock()
defer rwmu2.Unlock()
user.Cache = cache.NewCache()
userAccountMap[user.Account] = user
}
// AddUser 添加用户
// AddUser 添加新的用户到数据库中。
// 参数 User: 包含用户信息的对象。
// 返回值: 插入操作影响的行数和可能发生的错误。
func AddUser(User *User) (int64, error) {
func AddUser(user *User) (int64, error) {
//处理一些验证
//写入缓存
AddUserCache(User)
// 写入到数据库
result := connection.GetUserDB().Create(&User) // 通过数据的指针来创建
result := connection.GetUserDB().Create(&user) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("添加用户失败 错误信息:", result.Error.Error())
}
return User.ID, nil
return user.ID, nil
}
// Login 用户登录
func Login(account string, password string) (*User, error) {
//这里优先验证缓存数据
var user *User
var User User
result := connection.GetUserDB().Where("account = ? AND password = ?", account, password).First(&User)
//这里优先验证缓存数据
user, err := GetUserByAccount(account)
if err == nil && user != nil {
return user, err
}
result := connection.GetUserDB().Where("account = ? AND password = ?", account, password).First(&user)
if result.Error != nil {
return nil, result.Error
}
return &User, nil
//写入缓存
AddUserCache(user)
AddUserIdCache(user)
return user, nil
}