1、   何为缓存?

    缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。提高性能。

2、   缓存的类型

1)客户端缓存:

    客户端缓存是说当我们去访问一个新的网站的时候,第一次可能会花一阵子时间才能载入整个页面。然而以后再去时间就会大大缩短,原因就在于客户端缓存。现在浏览器都很智能,它会在客户机器的硬盘上保留许多静态的文件,比如各种gif,jpeg等。等以后再去的时候,它会尽量使用本地缓存里的文件,只有服务器端的文件更新了,或是缓存里面的文件过期了,它才会再次从服务器端下载这些东西。很多时候是浏览器替我们做了这件事情。

2)服务器缓存:

    有些东西没有办法或者说是不适宜在客户端缓存的,这个时候就会用到服务器缓存。服务器端缓存从性质上看,又可以分为两种:

静态文件缓存:

    好多页面是静态的,很少改动,那么这种文件最适于作静态缓存。现在的IIS6.0这部分内容是直接存放在Kernel的内存中,有HTTP.SYS直接管理。由于它在Kernel Space,所以它的性能非常的高。用户的请求如果在缓存里面,那么HTTP.SYS直接将内容发送到network driver上去,不需要像以前那样从IIS的User space的内存再复制到Kernel中,然后再发送到TCP/IP stack上。kernel level cache几乎是现在高性能Web server的一个必不可少的特性。这就是为什么静态文件快的原因。

动态缓存:

    动态缓存是比较有难度的。因为你在缓存的时候要时刻注意一个问题,那就是缓存的内容是不是已经过时了,因为过时了可能会有很严重的后果。就像是网上买卖股票的网站,给别人的提供的价格是过时的,那人家非得找你拼命。

3、   MVC中的缓存技术—OutputCache过滤器

OutputCache过滤器:用于缓存你查询结果,这样可以提高用户体验,也可以减少查询次数。  相关属性:

Duration:缓存的时间(以秒为单位)

VaryByParam:以哪个字段为标识来缓存数据

Location:缓存数据放在何处。

4、   Memcached简介

    Memcached是“分布式”的内存对象缓存系统,那么不需要“分布”的、不需要共享的或者干脆规模小到只有一台服务器的应用,Memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源,如果只是本地级缓存,使用Memcached是非常不划算的。

    Memcached在很多时候都是作为数据库前端Cache使用的。因为它比数据库少了很多SQL解析、磁盘操作等开销,而且它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能。在大型系统中,访问同样的数据是很频繁的,Memcached可以大大降低数据库压力,使系统执行效率提升。另外,Memcached也经常作为服务器之间数据共享的存储媒介。

    Memcached使用内存管理数据,所以它是易失的,当服务器重启或者Memcached进程终止,数据便会丢失,所以Memcached不能用来持久保存数据。很多人错误地理解,认为Memcached的性能非常好,好到了内存和硬盘的对比程度,其实Memcached使用的内存并不会得到成百上千的读写速度提高,它的实际瓶颈在于网络连接。它和使用磁盘的数据库系统相比,好处在于它本身非常“轻”,因为没有过多的开销和直接的读写方式,它可以轻松应付非常大的数据交换量,所以经常会出现两条千兆带宽都满负荷了,Memcached进程本身并不占用多少CPU资源的情况。

    从使用的角度来说,Memcached针对Asp.net的API就像和内置的API一样。开发人员很容易使用Memcached,仅仅通过在代码中查找和替换即可实现。

 

小结:

    通过这两天对Memcached的学习,对缓存的理论有了一些了解。在做ITOO4.1中需要从session中获取一些用户选择了的值,当时做的时候就对缓存一知半解的,所以挺有兴趣研究这一块知识的。这两天也一直在尝试着安装Memcached,安装成功了,但是一些命令运行老报错,提示需要至少4个线程,所以还需要深入研究一下。小编是有些困惑,接下来将不断尝试,找到解决问题的办法,同时进一步研究Memcached技术在ITOO中的应用及代码实现。

转载于:https://www.cnblogs.com/fengkungui/p/6040157.html

ITOO4.1之缓存—分布式缓存Memcached学习(理论篇)相关推荐

  1. 【软件开发】Memcached(理论篇)

    Memcached(理论篇) 1.Memcached 简介 Memcached 是一个开源的,支持高性能,高并发的分布式内存缓存系统,由 C 语言编写,总共 2000 多行代码.从软件名称上看,前 3 ...

  2. CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录

    很高兴和大家在这里分享我的最新专栏 Pytorch深度学习·理论篇(2023版),恭喜本博客浏览量达到两百万,CSDN内容合伙人,CSDN人工智能领域实力新星~ 0 Pytorch深度学习·理论篇+实 ...

  3. 高并发读场景下的利器:本地缓存+分布式缓存

    本地缓存和分布式缓存并不是二者取其一甚至对立的关系,而是要结合使用:常见的电商高并发读场景下下,本地缓存存放热点数据,分布式缓存存放全量数据:当然这里有一个很重要的点,即要结合业务,本地缓存中的数据一 ...

  4. memcached 缓存 分布式缓存 常见命令,管理命令

    1.启动Memcache 常用参数  -p <num>      设置端口号(默认不设置为: 11211)  -U <num>      UDP监听端口(默认: 11211, ...

  5. [深度学习-理论篇]什么是卷积神经网络CNN

    卷积神经网络 1. 为什么用卷积神经网络 1.1. 局部感知(local field) 1.2. 权值共享(Shared Weights) 1.3. 下采样或池化(subsampling) 2. 卷积 ...

  6. 深度学习·理论篇(2023版)·第001篇快速了解人工智能与Pytorch:机器/表示/深度学习定义+端到端的学习+神经网络在计算机视觉应用+深度学习的技术蓝图

  7. 深度学习·理论篇(2023版)·第006篇高维空间下的维度与体积距离的关系:采样和维度+高维空间下体积与距离+中心极限定律与距离分布(深度学习)

  8. 高性能分布式缓存Redis(缓存分类 安装 数据类型选择和应用场景 发布订阅 事务 Lua脚本 慢查询日志)

    高性能分布式缓存Redis 高性能分布式缓存Redis 1. 缓存发展史&缓存分类 1.1 大型网站中缓存的使用 1.2 常见缓存的分类 1.3 分布式缓存选型方案对比 2. Redis概述& ...

  9. 服务端分布式缓存与本地缓存

    缓存技术是保障系统性能的基础技术.核心技术. 缓存发挥的作用 ① 最大程度上避免对数据库的并发查询,从而降低因为数据库资源不足导致的系统故障. ② 提升系统的响应速度,保证用户体验 总之缓存使系统稳定 ...

最新文章

  1. 机房收费系统总结【2】-细节优化
  2. 补全依赖_VIM JavaScript补全(2019)
  3. 1个GPU几分钟搞定强化学习训练,谷歌新引擎让深度学习提速1000倍丨开源
  4. matlab编程小结
  5. 成功解决 python 不是内部或外部命令,也不是可运行的程序或批处理文件
  6. java 服务端客户端数据传输出现乱码
  7. SIGIR 2019 eBay高精度召回任务挑战赛冠军团队DeepBlueAI技术分享
  8. SQL Server 系统存储过程
  9. [学习笔记]后缀自动机
  10. 在AWS中设置Cassandra集群
  11. mysql 客户端乱码_Mysql客户端中文乱码问题解决
  12. java实现 mysql导入_怎么用java实现mysql数据库的导入导出
  13. 论文笔记_S2D.75_2021-CoRL_TANDEM_基于深度多视图立体视觉的实时跟踪和稠密建图
  14. 函数指针作为函数參数,实现冒泡排序的升序排序和降序排序
  15. python去重算法_python去重算法
  16. 网上支付流程(大致)
  17. Oracle 如何生成随机数字、字符串、日期、验证码以及 UUID
  18. 计算机桌面图标乱码,电脑软件上的文字变乱码怎么办?怎么修复?
  19. 【LeetCode】P70 爬楼梯
  20. 带你玩转序列模型之循环神经网络(一)

热门文章

  1. 典型的DIV+CSS布局——左中右版式
  2. 【Nvivo教程】使用Nvivo构建计算的本体
  3. 配置开发ExtJS环境
  4. SQLServer之创建INSTEAD OF INSERT,UPDATE,DELETE触发器
  5. Linux 配置IP地址,子网,网关,DNS,linux远程, wget 下载工具
  6. javascript var变量删除
  7. 郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测...
  8. apply()和call()的区别
  9. 我的Java开发学习之旅------Java经典排序算法之希尔排序
  10. sql server 清空数据库表数据