数据缓存中的二级缓存用法

来源:互联网 发布:游戏里被广为人知的梗 编辑:程序博客网 时间:2024/06/06 00:32

数据缓存中的二级缓存用法

引子:

在分布式系统中估计大多数人是用redis或memcached作缓存,好处就不多说了,虽然这两种缓存的存取速度,性能都不错,但相比于本地的内存缓存还是有差距的。这也是为什么要用二级缓存的原因。

一个.net代码例子

/// <summary>/// 获取用户的群id;二级缓存/// </summary>/// <param name="userId">用户id</param>/// <returns></returns>public static int GetGroupId2LevelCache(int userId){try{//.net local cachevar groupId = CacheApi.Group.GetGroupIdLocalCache(userId);if (groupId < 1){//redis cachegroupId = CacheApi.Group.GetGroupIdCache(userId);if (groupId < 1){//get groupid 略//redis cacheCacheApi.Group.SetMeditationGroupIdCache(userId, groupId);}CacheApi.Group.SetMeditationGroupIdLocalCache(userId, groupId);}return groupId;}catch (Exception e){Log.Error(e.Message + e.StackTrace);}return 0;}

适合用的场景

由于是先用本地缓存取数据,没取到再到分布式缓存中取,再从db取,当该数据在缓存周期内有不会变化的(或者说这种变化会不影响你读取的数据)而且这数据的读取频率很大则适合用。

不适合用的场景

由于是先用本地缓存取数据,没取到再到分布式缓存中取,再从db取,当该数据在缓存周期内有可能变化的(或者说这种变化会影响你读取的数据)则不大适合用这种二级缓存,因为如果要从业务上维护这种数据同步,会使代码变得复杂。

建议:

这种用法能解决一部分实际应用中的问题,如果有其它更好的方法希望也能贴出来,不胜感激!
原创粉丝点击