60 lines
1.8 KiB
Lua
60 lines
1.8 KiB
Lua
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 |