九、NOSQL与缓存系统-Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,现在很多的大型web应用程序包括Facebook LiveJournalmixi,Digg等等都在使用memcached支持他们每天数亿级的页面访问。通过把cache层与他们的架构集成,他们的应用程序在提高了性能的同时,还大大降低了数据库负载

Memcached处理的原子是每一个(key,value)对(以下简称kv对),key会通过一个hash算法转化成hash-key,便于查找、对比以及做到尽可能的散列。同时,memcached用的是一个二级散列,通过一张大hash表来维护。

Memcached安装

下包wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

下载完后启动命令

chkconfigmemcached on

servicememcached start

servicememcached status

测试外部连接端口:telnet 192.168.134.xxx11211

使用命令清单

-d选项是启动一个守护进程,
-m是分配给memcache使用的内存数量,单位是MB,例中是10MB
-u是运行Memcache的用户,例中是root,
-l是监听的服务器IP地址,若有多个地址的话,IP地址192.168.134.139 ,
-p是设置Memcache监听的端口,例中设置为12000,最好>1024
-c选项是最大运行的并发连接数,默认是1024,例中设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,例中保存在/tmp/memcached.pid

Memcached服务器运行情况的参数

STAT pid3324 服务器进程ID

STAT uptime467 服务器运行时间,单位秒

STAT time1364197002 服务器当前的UNIX时间

STAT version1.4.4 服务器的版本号

STATpointer_size 64

STAT rusage_user0.000999 该进程累计的用户时间(秒:微妙)

STATrusage_system 0.002999 该进程累计的系统时间(秒:微妙)

STATcurr_connections 10连接数量

STATtotal_connections 13服务器运行以来接受的连接总数

STATconnection_structures 11 服务器分配的连接结构的数量

STAT cmd_get 0取回请求总数

STAT cmd_set 0存储请求总数

STAT cmd_flush 0

STAT get_hits 0请求成功的总次数

STAT get_misses0请求失败的总次数

STATdelete_misses 0

STAT delete_hits0

客户端测试

1、引用com.danga.MemCached.*

2、初始化设置

String[] servers = { "192.168.134.139:11211"};

Integer[] weights = { 3 };

MemCachedClient mcc = new MemCachedClient();

SockIOPool pool = SockIOPool.getInstance();

pool.setServers(servers);

pool.setWeights(weights);

pool.setInitConn(5);

pool.setMinConn(5);

pool.setMaxConn(250);

pool.setMaxIdle(30);

pool.setMaintSleep(30);

pool.initialize();

3、编写操作代码

获取某键值内容

Object obj =mcc.get("key2");

替换某键值内容

// 如果key不存在,则返回flase,更新失败

boolean b =mcc.replace("key2","newValue");

删除某键值内容

Object key3 =mcc.get("key3");

mcc.delete("key3");

Object key3now = mcc.get("key3");

相关文章

一、引言 学习redis 也有一段时间了,该接触的也差不多了。后来有一天,以前的同事问我,如何向redis中...
一、引言 上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译...
一、介绍 Redis客户端使用RESP(Redis的序列化协议)协议与Redis的服务器端进行通信。 虽然该协议是专门...
一、引言 redis学了一段时间了,基本的东西都没问题了。从今天开始讲写一些redis和lua脚本的相关的东西...
一、介绍 今天继续redis-cli使用的介绍,上一篇文章写了一部分,写到第9个小节,今天就来完成第二部分。...
一、引言 上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入...