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