HomeServer/Server/Common/RedisCache.lua

60 lines
1.8 KiB
Lua
Raw Permalink Normal View History

2024-11-20 15:41:09 +08:00
local skynet = require "skynet"
local oo = require "Class"
local log = require "Log"
local RedisCache = oo.class()
RedisCache.OutOfRecordTime = 600 --记录过期时间
--初始化
function RedisCache:Init()
self.personalDetail = {}
end
--获取个人信息
function RedisCache:GetPersonalDetail( partnerId )
local curDetail = self.personalDetail[ partnerId ]
local t = skynet.GetTime()
local tmpDetail = nil
if curDetail then
if t >= curDetail.recordTime + self.OutOfRecordTime then
--有缓存并且缓存超时就从redis中去拉数据
tmpDetail = skynet.server.personal:GetDetail( partnerId )
else
--有缓存并且缓存未超时就返回缓存数据
tmpDetail = self.personalDetail[ partnerId ].detail
return tmpDetail
end
else
--没有缓存就从redis中去拉数据
tmpDetail = skynet.server.personal:GetDetail( partnerId )
self.personalDetail[ partnerId ] = {}
end
self.personalDetail[ partnerId ].recordTime = t
self.personalDetail[ partnerId ].detail = tmpDetail
return tmpDetail
end
--更新个人信息
function RedisCache:UpdatePersonalDetail( partnerId )
if self.personalDetail[ partnerId ] then
self.personalDetail[ partnerId ].recordTime = 0
end
end
--设置个人信息
function RedisCache:SetPersonalDetail( partnerId , detailData )
self.personalDetail[ partnerId ] = detailData
end
--是否存在个人信息
function RedisCache:IsExistPersonalDetail( partnerId , detailData )
if self.personalDetail[ partnerId ] then
return true
end
return false
end
skynet.server.redisCache = RedisCache
return RedisCache