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

203 篇文章 3 订阅
49 篇文章 0 订阅

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

引子:

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

一个.net代码例子

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

适合用的场景

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

不适合用的场景

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

建议:

这种用法能解决一部分实际应用中的问题,如果有其它更好的方法希望也能贴出来,不胜感激!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值