MemCached是什么?
MemCached是一个高性能、分布式、内存对象缓存系统,
- 官方网站:http://www.danga.com/memcached/
- 下载地址:http://www.danga.com/memcached/download.bml
- 目前两个版本:
1.4.0 1.2.x
MemCached的安装
Linux下源代码编译安装MemCached
$ wget http://www.danga.com/memcached/dist/memcached-1.2.8.tar.gz
$ tar zxvf memcached-1.2.8.tar.gz
$ cd memcached-1.2.8
$ ./configure
$ make
$ sudo make install
默认情况下,memcached安装到/usr/local/bin下
Ubuntu下安装MemCached
$ sudo apt-get install memcached
[sudo] password for aaronjiu: 输入你当前用户帐号
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会安装下列额外的软件包:
libevent1
建议安装的软件包:
libcache-memcached-perl
下列【新】软件包将被安装:
libevent1 memcached
Windows下安装memcached
略
MemCached的启动
从终端输入以下命令,以linux为例:
$ /usr/local/bin/memcached -p 11211 -m 64m -vv
slab class 1: chunk size 80 perslab 13107
slab class 2: chunk size 100 perslab 10485
slab class 3: chunk size 128 perslab 8192
slab class 4: chunk size 160 perslab 6553
slab class 5: chunk size 200 perslab 5242
slab class 6: chunk size 252 perslab 4161
slab class 7: chunk size 316 perslab 3318
slab class 8: chunk size 396 perslab 2647
slab class 9: chunk size 496 perslab 2114
slab class 10: chunk size 620 perslab 1691
slab class 11: chunk size 776 perslab 1351
slab class 12: chunk size 972 perslab 1078
slab class 13: chunk size 1216 perslab 862
slab class 14: chunk size 1520 perslab 689
slab class 15: chunk size 1900 perslab 551
slab class 16: chunk size 2376 perslab 441
slab class 17: chunk size 2972 perslab 352
slab class 18: chunk size 3716 perslab 282
slab class 19: chunk size 4648 perslab 225
slab class 20: chunk size 5812 perslab 180
slab class 21: chunk size 7268 perslab 144
slab class 22: chunk size 9088 perslab 115
slab class 23: chunk size 11360 perslab 92
slab class 24: chunk size 14200 perslab 73
slab class 25: chunk size 17752 perslab 59
slab class 26: chunk size 22192 perslab 47
slab class 27: chunk size 27740 perslab 37
slab class 28: chunk size 34676 perslab 30
slab class 29: chunk size 43348 perslab 24
slab class 30: chunk size 54188 perslab 19
slab class 31: chunk size 67736 perslab 15
slab class 32: chunk size 84672 perslab 12
slab class 33: chunk size 105840 perslab 9
slab class 34: chunk size 132300 perslab 7
slab class 35: chunk size 165376 perslab 6
slab class 36: chunk size 206720 perslab 5
slab class 37: chunk size 258400 perslab 4
slab class 38: chunk size 323000 perslab 3
slab class 39: chunk size 403752 perslab 2
slab class 40: chunk size 504692 perslab 2
<3 server listening
上面显示了调试了信息,,<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in },这样就在前台启动了memcached
,监听TCP
端口11211,
最大内存使用量为64M
。调试信息的内容大部分是关于存储的信息,我会在另一篇文章中介绍
如果想作为后台daemon启动,只需在终端输入如下命令:
$ /usr/local/bin/memcached -p 11211 -m 64m -d
如果想查看各个参数的含义,请在终端输入如下命令:
$ /usr/local/bin/memcached -h
常用启动选项含义
启动选项
-p <num> |
监听的TCP端口号 (默认值:11211) |
-U <num> |
监听的UDP端口号 (默认值: 0, off) |
-m <num> |
最大使用内存大小, 默认值是 64 MB |
-vv |
以very verbose模式启动, (也将客户端命令/响应打印在控制台) |
-h |
打印帮助信息并退出 |
-d |
作为daemon在后台运行 |
-i |
打印memcached 和 libevent许可协议 |
-M |
当内存耗尽返回错误 (而不是删除items) |
-f <factor> |
chunk size growth factor, default 1.25 |
-n <bytes> |
minimum space allocated for key+value+flags, default 48 |
MemCahed的客户端
许多语言都实现了连接MemCached的客户端,官方网站列出了有:
C/C++
ErLang
PHP
Perl
Java
Python
Ruby
Windows/.net
......
更多的信息请见:http://code.google.com/p/memcached/wiki/Clients
我们主要使用Java作为编程语言,所以主要讨论Java的客户端
官方网站所列的Java客户端主要有四个:
spymemcached
* http://code.google.com/p/spymemcached
o An improved Java API maintained by Dustin Sallings.
o Aggressively optimised, ability to run async, supports binary protocol, etc. See site for details.
Java memcached client
* http://www.whalin.com/memcached
o A Java API is maintained by Greg Whalin from Meetup.com.
More Java memcached clients
* http://code.google.com/p/javamemcachedclient
* http://code.google.com/p/memcache-client-forjava 这是一个由我的同事岑文初维护的开源项目,基于spymemcached上做的修改,是XPalform的ASF的一个组件,目前在阿里软件各个产品线有使用
MemCached的操作
保存数据
向memcached保存数据的方法有3种
它们的使用方法都相同,
- memcached.add("key", "value")
- memcached.add("key", "value", period)
- memcached.replace("key", "value")
- memcached.replace("key", "value", period)
- memcached.set("key", "value")
- memcached.set("key", "value", period)
向memcached保存数据时,可以指定过期时间(秒),如果不指定,将按照默认的LRU算法保存数据,以上三个方法的区别:
方法 |
说明 |
add |
当且仅当存储空间不存在相同键时才保存 |
replace |
当且仅当存储空间存在相同键时才保存 |
set |
无论存储空间是否存在相同键,都保存 |
获取数据
获取数据可以谁用get和getMulti方法
Object value = memcached.get("key")
Object[] values = memcached.getMulti("key1", "key2", "key3)
一次获取多个键的数据时,使用getMulti方法,getMulti可以非同步地获取多个数据,其速度比循环调用get快数十倍
删除数据
删除使用delete方法,不过这个方法也有一个超时的参数
memcached.delete("key", seconds)
调用上述方法,会删除指定key的数据,
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-第二个参数指定一个时间值,可以禁止使用同样的键保存新数据。
此功能可以用于防止缓存数据的不完整。但是要注意,set
函数忽视该阻塞,照常保存数据
增一和减一操作
可以将memcahed上面的特定的键值作为计数器使用
memcached.insr("key")
增一和减一是原子操作,如果未设置初值,不会自动赋值为0,
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->
因此, 应当进行错误检查,必要时加入初始化操作。而且,服务器端也不会对
超过232
时的行为进行检查。
分享到:
相关推荐
memcached基础-参考
Memcached是一个免费开源、高性能、分布式的内存对象缓存系统。Memcached是在内存中,为特定数据(字符串或对象)构建key-value的小块数据存储。
轻松掌握Memcached基础、安装使用;Memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性
Memcached使用入门,Memcached基础及示例程序,Memcached Java API基础之MemcachedClient
Memcached原理和使用详解.pdf memcached完全剖析–1._memcached的基础.pdf memcached全面剖析.pdf Memcached内存分析、调优、集群.pptx
memcached 包含基础知识 简单的安装 启动等情况 适合新手菜鸟
然而,memcached的基础知识远远未能像其他Web技术那样普及,memcached在国内的大规模应用也在急速兴起。 第1 章 memcached的基础 第2章 理解memcached的内存存储 第3 章 memcached的删除机制和发展方向 第4 章 ...
Simple-Spring-Memcachd(SSM)企图通过实现几个基础的使用项来简化Memcached的使用。 该项在java-memcached客户端的基础上使用java5的注解和Sping/AspectJ的AOP,使能够在Sping中管理bean缓存。使用Simple-Spring-...
1.Memcached 安装、部署、Demo程序 2.LinQ to Memcached 3.性能测试、通信数据结构设计 ...6.项目应用(IM基础数据缓存,例:Category、Brand、Manufacturer等) 7.了解Memcached实现机制,数据模型并做培训
Tomcat+MemcachedRedis集群,有视频实战以及源码。包含Tomcat性能优化,Redis基础入门以及使用场景,性能优化
memcached部署,详细介绍了memcached缓存的使用,为以后的云负载均衡做一个基础。
memcached的基础知识 由日本的mixi两名工程师连载 翻译的中文
3.1 Memcached基础 3.1.1 什么是Memcached 3.1.2 Memcached的特征 3.1.3 Memcached的安装 3.1.4 Memcached的简单使用过程 3.2 剖析Memcached的工作原理 3.2.1 Memcached的工作过程 3.2.2 Slab ...
这个包是最高版本了,google code是1.22,但是这个版本是基础班的1.5版本.是github上源代码经过我打包出来的jar
森帕克模块功能Nuget名称努吉特支持.NET版本CO2NET基础库森帕克 APM模块Senparc.CO2NET.APM Redis基础库Senparc.CO2NET.Cache.Redis Memcached基础库Senparc.CO2NET.Cache.Memcached 同时支持.NET Standard 2.0+和...
memcached的基础 memcached全面剖析–2. 理解memcached的内存存储 memcached全面剖析–3. memcached的删除机制和发展方向 memcached全面剖析–4. memcached的分布式算法 memcached全面剖析–5. memcached的应用...
然而, memcached 的基础知识远远未能像其他 Web 技术那样普及,memcached 在国内的大规模应用也鲜为人知。而日本的 mixi(http://mixi.jp)则在这方面走在了前面,不仅大规模使用 memcached 作为缓存来加速 Web ...
Memcached Go Queue, 简称mgq, 是一个用Go语言写的,基于memcached协议的消息队列。其父亲mcq是最早应用于weibo的基础消息中间件,有着高性能,解耦的优点,使得其广泛应用于微博
从今天开始,将分几次针对最近在Web应用的可扩展性领域的热门话题memcached,与我公司开发部研究开发组的前坂一起,说明其内部结构和使用。memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首...