其他分享
首页 > 其他分享> > 最佳实践缓存:单块与细粒度的缓存数据

最佳实践缓存:单块与细粒度的缓存数据

作者:互联网

在分布式缓存方案中,通常建议使用或避免使用存储在缓存中的整体对象吗?

我正在使用由EAV模式支持的服务,因此我们将缓存放在适当的位置,以最大程度地减少从数据库中检索所有主要记录和相应属性集合时EAV造成的可感知的性能缺陷.我们将在服务启动时启动缓存.

我们并不是对所有产品都特别频繁地打电话给客户-客户在他们首先用对象图填充本地缓存后要求差异.为了执行该差异,分布式缓存将需要反映对数据库中各个记录的更改,这些更改是在任意基础上执行的,并在客户端要求差异时对其进行处理.

首先想到的是使用列表或字典将记录存储在分布式缓存中-获取整个集合,在本地内存中对其进行操作或搜索,然后将整个集合放回缓存中.但是,后来的想法导致了用单独的记录填充缓存的想法,每个记录都以某种方式键入,以使它们可以分别从缓存中更新或更新到缓存中.这导致想知道哪种方法在更新所有数据时会更有效.

我们正在使用Windows Server AppFabric,因此我们可以使用BulkGet操作.我不认为有任何批量更新的概念.

是否有关于分布式缓存对象大小的主流想法?如果我们对所有项目都有更多的请求,我会担心网络带宽,但是至少到目前为止,对所有项目的需求应该非常小.

是的,我们将测试和分析每种方法,但是我想知道是否有什么超出当前考虑范围.

解决方法:

因此,在我们的方案中,似乎首选整体缓存对象.借助数据中心中的大型胖管道,大约30 MB的序列化产品数据几乎不需要花费时间.使用字典< TKey,TValue>.我们能够在集合中快速找到产品,以退还或更新单个商品.

缓存中有成千上万个单独的实体(都不足1 MB),批量操作花费的时间太长.过多的开销,网络操作中的延迟.

编辑:我们现在正在考虑同时维护实体和实体的整体集合,因为对于整体而言,使用生产数据集检索单个实体似乎变得相当昂贵.

标签:appfabric,caching,distributed-caching,c,net
来源: https://codeday.me/bug/20191208/2091846.html