memcached—理论基础
来源:互联网 发布:工作站品牌 知乎 编辑:程序博客网 时间:2024/04/30 11:54
memcached,嗯,memory cache
memcached是免费的、开放源代码的、高性能、分布式的内存对象缓存系统,通常用来减轻数据库负载、提升动态网页应用。memcached是按key-value方式存储在内存中任意小块数据,这些数据可能是来自数据库访问、API调用、也可能是一些页面渲染。下次访问时,从memcached中读取代替重新请求
组成
- 客户端,列出一系列可用的memcached服务器
- 基于客户端的哈希算法,会根据输入的key来选择具体的memcached服务器
- 服务器,存储key-value在哈希表中
- 服务端算法,决定何时扔掉过期的数据,恢复内存
memcached特性
memcached简单且强大,它的简单设计促进了易于部署、易于开发,并且解决了大数据量缓存中面临的大多数问题。memcached提供了多种流行语言版本的API,比如:C/C++,PHP,Java,Python,Ruby,Perl,Windows / .NET,MySQL,PostgreSQL,Erlang,Lua,Lisp dialects等等,详细的可以参考:https://code.google.com/p/memcached/wiki/Clients(google的,应该需要翻墙)。最核心的是,memcached采用非常简单的key-value存储
简单的key-value存储
每个项目由一个key、一个过期时间、可选的标志(32位整数)、存储的具体数据,服务器不关心具体的数据结构
一半在客户端,一半在服务器
memcached的实现,一半放在了客户端,一半放在了服务器。客户端知道如何把项目发送到特定的服务器,当服务器连接不上时应该怎么做,如何从服务器抓取数据。服务器知道如何接收和存储数据,如何让项目过期
多个服务器间互不通信
多个memcached服务器是不知道对方的存在的,没有通信,也没有同步。这也意味着添加多少服务器就会增加你所期望的功能,增加一个服务器,就会增加该服务器的全部容量,这个不同于高可用性中多个服务器
始终是O(1)
每条命令每次耗时大致相等
忘记数据功能
memcached默认为LRU(Least Recently Used)缓存,另外每个项目都可以设置一个过期时间(最长为30天,30*24*60*60秒)
失效
memcached集群,使数据失效是一个琐碎的事情,memcached客户端会直接让指定服务器上的项目失效,而不是广播到全部的服务器上
参考文献
源码:https://github.com/memcached/memcached
项目:https://code.google.com/p/memcached/(详细的介绍可以参考这个网页)
主页:http://www.memcached.org/
- memcached—理论基础
- MongoDB——理论基础
- 理论基础
- 理论基础
- vsts项目管理理论基础——MSF
- 课程设计——AVL搜索树理论基础
- SAX解析XML——理论基础
- 【ARM】初识ARM——硬件理论基础
- 【自考】软件开发工具—理论基础
- memcached—Java操作Memcached
- GIS坐标系转换——理论基础(一)
- GIS坐标转换——理论基础(二)
- MySQL 入门(二)—— MySQL理论基础
- MySQL 入门(二)—— MySQL理论基础
- 学习Spring第一课——spring理论基础
- 大数据学习——数据挖掘理论基础
- Spark MLlib 决策树算法(一)——理论基础
- 公钥密码学的理论基础—单向函数
- 10018---HttpClient 基本使用
- 一天一个数据结构之HashMap
- Android studio安装和一些快捷键
- windows下安装配置apache、mysql、php
- iOS 推送 通知 测试
- memcached—理论基础
- tableView的重用机制
- 变量,常量,引用类型,值类型,枚举类型, 值类型和引用类型的简单区别,类型转换,装箱与拆箱
- mfc 模仿键盘按键向银行密码控件输入密码
- Stream API:简单的聚合方法
- 用FragmentActivity实现点击跳转Fragment效果(未完)
- 体系架构番外篇 - 我们说MIPS的最佳页映射
- [leetcode]Number of 1 Bits
- java字符流读取写入文件