.net缓存的应用研究(读篇)
目前,缓存主要有两种技术:分布式缓存和进程级别的内容缓存。两种缓冲具体的差异就不废话了。
1.在技术上

数据库降压的最好方式就是缓存。在缓存的性能上,进程级别的内存缓存性能有明显优于分布式缓存,内存缓存性能最好,需多加利用。如果要对他们的使用排序的话,建议是:内存缓存>分布式缓存>数据库。
2.业界趋势

“数据要尽可能的贴近用户端,尽量高的从各类缓存中命中数据,而不是访问数据库”,这应该是个共识了。前端尽量通过CDN缓存抗压,后端要在各层提供各种缓存。按照这种思路,可以总结出缓存的设计原则:

静态化:数据尽量以目标展现的格式存储,而不是存储中间数据。减少数据格式化的时间消耗,用空间换时间。
专用:数据静态化后,可使用的范围有限,应尽量贴近用户的结构,降低使用后的格式化成本。
隔离:封装缓存数据的访问,把缓存的控制权掌握在自己手中。
3.缓存的使用原则
- 进程缓存
性能最高,优先考虑使用。
对数据要求苛刻,变化频率高、访问频率低的数据不能缓存。
建议缓存访问频率高、变化频率低的数据。
配合缓存的时效性策略应用。
- 分布式缓存
- 性能好。在内存缓存不适用的情况下,推荐使用。
- 建议作为缓存使用,而不是存储。
- 在数据变化频率很高的情况下,可作为DB的写入缓存
- 缓存同步模式:尽在进程缓存
- 增量同步:按照时间戳或者数据变化更新缓存
- 全量同步:重新拉取所有的缓存数据。不建议采用此种模式,性能差,同步的数据量大。
- 缓存同步时机
- 每次查询时同步:在做查询时,检验数据的版本,然后进行缓存同步。
- 增删改时失效:在做数据的增删改时,同步修改缓存。此种模式仅适用用分布式缓存,进程级别缓存不适用的。
- 定时同步:在缓存的驻留端定时更新缓存。此种模式适用于对数据的实时性要求不高的场景。
- 缓存时效性
- 有时效性:缓存数据存在时效性,不管数据的版本有没有变化,过期失效
- 无时效性:只要数据的时间戳保持不变,缓存数据永久有效。
weiliang 2016-10-8
.net缓存的应用研究(读篇)的更多相关文章
- spring boot学习(十三)SpringBoot缓存(EhCache 2.x 篇)
SpringBoot 缓存(EhCache 2.x 篇) SpringBoot 缓存 在 Spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManag ...
- 闲话缓存:ZFS 读缓存深入研究-ARC(二)
Solaris ZFS ARC的改动(相对于IBM ARC) 如我前面所说,ZFS实现的ARC和IBM提出的ARC淘汰算法并不是完全一致的.在某些方面,它做了一些扩展: · ZFS A ...
- 闲话缓存:ZFS 读缓存深入研究-ARC(一)
在Solaris ZFS 中实现的ARC(Adjustable Replacement Cache)读缓存淘汰算法真是很有意义的一块软件代码.它是基于IBM的Megiddo和Modha提出的ARC(A ...
- redis 缓存击穿 看一篇成高手系列3
什么是缓存击穿 在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示 因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询,这样缓存就失去了意义.如果 ...
- [redis] -- 缓存雪崩和缓存穿透、缓存击穿问题解决方案篇
缓存雪崩 缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉 解决方案 事前:尽量保证整个redis集群的高可用性,发现机器宕机尽快补上.选择合适的内存淘 ...
- 创建一个QT for Android的传感器应用应用程序(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)
这个手册描述了使用Qt Quick面访的方式在Android和ios设备上开发QtQuick应用程序的方法.我们使用Qt Creator实现一个QtQuick应用程序,这个应用程序基于加速器的值 ...
- 一步步创建Qt Widget项目+TextFinder案例(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)
创建一个基于应用的QtWidget应用程序 这个手册描述了怎样使用QtCreater创建个一个小的Qt应用程序,Text Finder.它是Qt工具Text Finder例子的简写版本.这个应用 ...
- 手把手带你阅读Mybatis源码(三)缓存篇
前言 大家好,这一篇文章是MyBatis系列的最后一篇文章,前面两篇文章:手把手带你阅读Mybatis源码(一)构造篇 和 手把手带你阅读Mybatis源码(二)执行篇,主要说明了MyBatis是如何 ...
- 看完这篇Redis缓存三大问题,保你面试能造火箭,工作能拧螺丝。
前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题. 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较 ...
随机推荐
- OpenAuth.Net.landv分支之旅开始制作CRM系统
OpenAuth.Net.landv分支之旅开始制作CRM系统 这个事件的由来是因为没有一个统一的会员卡平台系统,目前需要连接三家酒店会员系统,由于三家酒店使用了三种酒店管理系统,彼此之间的耦合低.三 ...
- 使用Bazel构建C/C++项目
目录 前提 基本概念 速查链接汇总 stage1: 一个package, 一个target stage2: 一个package,多个target stage3: 多package,多target st ...
- C/C++字节序(大端/小端)判断
C/C++大端小端判断 说的是变量的高字节.低字节在内存地址中的排放顺序. 变量的高字节放到内存的低地址中(变量的低字节放到内存的高地址中)==>大端 变量的高字节放到内存的高地址中(变量的低字 ...
- Windows10上强制Visual Studio以管理员身份运行
解决办法很简单: 1. 打开VS的安装目录,找到devenv.exe,右键,选择“兼容性疑难解答”. 2. 选择“疑难解答程序” 3. 选择“该程序需要附加权限” 4. 确认用户帐户控制后,点击测试程 ...
- CentOS7安装MySQL并设置远程登录
在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1 下载并安装MySQL官方的 Yum Re ...
- 公共语言运行时支持(/clr)
项目属性 -> 配置属性 -> “常规”里开启“公共语言运行时支持(/clr)
- 【BZOJ4764】弹飞大爷
题解: 这个应该还是比较简单的 首先比较容易想到用lct来维护 我们可以建立一个特殊点 然后我们要处理环 其实只要判断它和不和这个特殊点联通就行了 那么当它不是环了我们怎么还原呢 只要对每个在根节点记 ...
- Derive representation formula from Green’s identity
This article introduces how to derive the representation formula used in BEM from Green's identity. ...
- MUI组件四:选择器、滚动条、单选框、区域滚动和轮播组件
目录(?)[+] 1.picker(选择器) mui框架扩展了pipcker组件,可用于弹出选择器,在各平台上都有统一表现.poppicker和dtpicker是对picker的具体实现.*pop ...
- Codeforces 1076F Summer Practice Report dp
Summer Practice Report dp[ i ][ 0 ]表示放完前 i 页, 第 i 页最后一段是 0, 0个数的最小值. dp[ i ][ 1 ]表示放完前 i 页, 第 i 页最后一 ...