memcached缓存基本概念
Memcached是一套分布式内存对象缓存系统。
用于在动态应用系统中缓存数据库的数据,减少数据库的访问压力,达到提升网站系统性能的目的;
memcached在企业应用场景中一般是用来作为数据库的cache服务使用,memcached是通过预分配指定的内存空间来存取数据的,因此它比数据库直接操作磁盘要快很多,可以提供比直接读取数据库更好的性能。
另外,memcached也经常作为集群架构节点应用服务器之间的session数据共享的存储。
1、Memcached服务在应用中的工作流程:
Memcached是一种内存缓存,在工作中经常用来缓存数据库中的数据,数据被缓存在事先预分配的memcached管理的内存中,可以通过API的方式存取内存中缓存的这些数据,Memcached服务内存中缓存的数据就像一张巨大的HASH表,每条数据都是以key-value对的形式存在。
memcached通过缓存经常被读取的数据库中的数据,当程序需要访问后端数据库获取数据时会优先访问memcached内存缓存,如果缓存中有数据就直接返回前端服务应用,如果没有数据再转发给后端的数据库服务器,程序服务取memcached内存缓存中没有对应的数据后,除了返回给用户数据外,还会把数据在内存中进行缓存,等待下次被访问,从而大大的减轻数据库的压力,提高整个网站架构的响应速度,提升了用户体验。
2、memcached服务在大型站点中的应用
几乎所有的网站,当访问量增大时,在整个网站集群架构中最先出现瓶颈的一定是数据库角色的服务器以及存储角色的服务器,在工作中我们是尽量把用户的请求往前推,即当用户请求数据时,越是在靠近用户的一端把数据返回就越好。
见作者的千万级PV/IP规模高性能高并发网站架构:http://oldboy.blog.51cto.com/2561410/736710
3、memcached负载均衡及分布式应用场景:
[分布式应用1]
Memcache支持分布式,我们在应用服务器程序上改造,就可以更好的支持。
[分布式应用2]
在应用服务器上通过程序及URL_HASH,一致性哈希算法去访问Memcache服务,所有Memcached服务器的地址池可以简单的配在每个程序的配置文件里。
[分布式应用3]
门户如百度,会通过一个中间件代理负责请求后端的Cache服务。
[分布式应用4]
可以用常见的LVS,haproxy做Cache的负载均衡,和普通web应用服务相比,这里的重点是调度算法,Cache一般会选择URL_HASH及一致性hash算法。
3、Memcached的特性
Memcached作为高并发、高性能的缓存服务,具有如下特征:
(1)协议简单
memcached的协议实现比较简单,使用的是基于文本行的协议,能通过telnet直接操作memcached服务存取数据。
(2)基于libevent的事件处理
简单的说,libevent是一套利用C开发的程序库,它将BSD系统的kqueue,linux系统的epoll等事件处理功能封装成一个接口,确保即使服务器端的连接数增加也能发挥很好的性能。
(3)内置的内存管理方式
memcached有一套自己管理的内存的方式,这套管理方式非常高效,所有的数据都保存在Memcached内置的内存中,当存入的数据占满内存空间时,Memcached使用LRU算法自动删除不使用的缓存数据,即重用过期数据的内存空间。
(4)互不通信memcached之间具有分布特征
各个Memcached服务器之间互相不通信,都是独立的存取数据,不共享任何信息。通过对客户端的设计,让memcached具有分布式,能支持海量缓存和大规模应用。
memcached缓存基本概念的更多相关文章
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)
Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...
- memcached 缓存服务器
Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...
- Memcached缓存入门篇
Asp.Net中使用Couchbase——Memcached缓存入门篇 前言 本文的主要目的就是简单的进行使用Memcached.这是Memchahed的官网http://memcached.org/ ...
- 一,memcached的基本概念
1,memcached的基本概念 memcached是一个高效的分布式内存对象缓存系统,它可以支持把各种php的数据(array,对象,基本数据类型)放入到它管理的内存中.简单的说,memcached ...
- Python项目使用memcached缓存
前言许多Web应用都将数据保存到MySQL这样的关系型数据库管理系统中,应用服务器从中读取数据并在浏览器中显示. 但随着数据量的增大.访问的集中,就会出现数据库的负担加重.数据库响应恶化. 网站显示延 ...
- openstack (3)---------部署memcached缓存服务,keystone服务
一.memcached概念 Memcached 是一个开源的.高性能的分布式内存对象缓存系统.通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高网站访问速度,加速动态WEB应用.减轻数据库负载 ...
- Memcached 缓存系统简介
memcached官网:http://memcached.org/ What is Memcached? Memcached是一个自由开源的,高性能,高并发,分布式内存对象缓存系统. Memcache ...
- .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存
注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...
- redis和memcached缓存
memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...
随机推荐
- POJ 2280 Amphiphilic Carbon Molecules 极角排序 + 扫描线
从TLE的暴力枚举 到 13313MS的扫描线 再到 1297MS的简化后的扫描线,简直感觉要爽翻啦.然后满怀欣喜的去HDU交了一下,直接又回到了TLE.....泪流满面 虽说HDU的时限是2000 ...
- 文本相似度-BM25算法
BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms app ...
- 解决eclipse导出javadoc时的“错误: 编码GBK的不可映射字符”问题(转)
http://blog.csdn.net/psy1100/article/details/51179342 今天要将自己的API接口和MODEL导出来一份java doc参考文档, 但是在导出的时候却 ...
- [Canvas]新版箴言钟表
动态效果点此下载用浏览器打开观看. 本作Github地址:https://github.com/horn19782016/12MaximClock 图例: 代码: <!DOCTYPE html& ...
- scoop - 初次使用
scoop也是包管理工具,不过是含着金钥匙出生的(正巧碰上微软支持开源,并且拥抱开源生态圈),此后的Win10 powershell 3.x+也就不会像Win7 powershell 2.x那样沉默了 ...
- NUMA总结。
vsphere 5.1性能最佳实践http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.1.pdf vNUMA 要求:硬件版本8以上. 1.整个 ...
- sqlAlchemy学习 001
研究学习主题 sqlAlchemy架构图 测试练习代码编写 连接数据库 看代码 db_config = { 'host': 'xxx.xxx.xxx.xx', 'user': 'root', 'pas ...
- Audition CC2019 MME设备内部错误怎么解决!
安装完了AA2019,没有想到像昨天安装系统那么不顺利... 当然出现问题的原因是因为我安装了win10 并且我禁用了麦克风的所有应用权限. 设置里面搜索 麦克风 权限 Ok工作啦, 好开森~ ...
- 请用js去除字符串空格?
方法一:使用replace正则匹配的方法 去除所有空格: str = str.replace(/\s*/g,""); 去除两头空格: str = str.replace(/^\s* ...
- Webview跨域访问风险
漏洞原理:WebView对象的行为是通过WebSettings类进行设置的,如果配置不当,攻击者就可以利用该漏洞可以打破Android沙盒隔离机制,从而通过某个应用来攻击其它应用,盗取其它应用本地保存 ...