学习SCUT服务器之缓存结构

最近用scut开发棋牌服务器,谈谈缓存结构

缓存结构分为,personal,share,memory,

私有类型用于用户信息,用户背包,等等

公共类型用于配置数据

缓存类型用于游戏中的逻辑比如游戏中桌子,位置数据

对应有PersonalCacheStruct<T>,ShareCacheStruct<T>缓存集

PersonalCacheStruct<T>,ShareCacheStruct<T>都继承BaseCacheStruct<T>,所有缓存数据是存放在readonlyPools,writePools,memoryPools中,在这3个pools中存放了CacheContainer 线程安全的<string,CacheContainer>,即3中类型的CacheContainer,所有缓存数据的存放位置

当要获取PersonalCacheStruct<T>中的数据时, new PersonalCacheStruct<GameUser>().FindKey("138001");

a.如果在缓存,返回缓存内的数据,

b.缓存没有,会去redis里面找数据

首先,查找缓存数据,是BaseCacheStruct<T>中会去CacheFactory中获取EntityContainer,图中步骤1,2,实体缓存容器

EntityContainer中会获取这种类型的所有CacheContainer 步骤3,4

最后查找数据 138001,是在A中_CacheStruct 类型是线程安全的<string,object> 即new PersonalCacheStruct<GameUser>().FindKey("138001") 实则是在_CacheStruct["138001"]

后面继续研究一下源码

 

posted @ 2016-07-01 20:42  jesse_xie  阅读(428)  评论(0)    收藏  举报