数据存储与缓存2-memcached-C

1.redis

2.memcached

3.MongoDB



2.memcached
Memcached守护进程是c写的,是高性能的分布式内存对象缓存系统

2.1 memcached安装
http://s3.amazonaws.com/downloads.northscale.com/memcached-win32-1.4.4-14.zip
http://s3.amazonaws.com/downloads.northscale.com/memcached-win64-1.4.4-14.zip
下载后解压memcached-win32-1.4.4-14.zip为memcached,并将memcached-win64-1.4.4-14.zip中的3个文件覆盖memcached中的文件。


#进入memcached根目录,注册为windows服务:
D:\service\memcached>memcached.exe -d install

#进入memcached根目录,检测是否安装成功:
D:\service\memcached>memcached -h
若返回参数说明安装成功

#启动服务
> net start memcached

或者

#启动服务
D:\service\memcached>memcached.exe -d start

#测试是否启动成功
telnet 127.0.0.1 11211

#其他系统及命令或参数:
memcached.exe -d stop

memcached.exe -d uninstall

-m 最大内存使用,单位MB。默认64MB
-c 最大同时连接数,默认是1024
-p 监听的端口


例如:
> memcached.exe -p 10000 -m 512 -d start


2.2 memcached使用-client
> telnet 127.0.0.1 11211
客户端连接服务器


命令格式为:
<command name> <key> <flags> <exptime> <bytes>//注意,此处要记得回车
<data block>


<bytes>是你输入<data block>的长度,必须输入长度相等的字符长度返回stored,返回报错:
CLIENT_ERROR bad data chunk

如:
#memcached服务器信息
>stats

#添加值
>add key 0 0 2
>12
>stored

#获取值
>get key

#修改
>set key 0 10 2
>13
>stored



2.3 memcached使用-java
https://github.com/gwhalin/Memcached-Java-Client

添加jar:
<dependency>
	    <groupId>com.whalin</groupId>
	    <artifactId>Memcached-Java-Client</artifactId>
	    <version>3.0.2</version>
	</dependency>



package com.byron.memcached.client;

import com.whalin.MemCached.MemCachedClient;
import com.whalin.MemCached.SockIOPool;

public class MemCachedTest {
	public static void main(String[] args) {
        // SockIOPool 初始化
        String[] servers = { "127.0.0.1:11211" };
        SockIOPool pool = SockIOPool.getInstance();
        pool.setServers(servers);
        pool.setFailover(true);
        pool.setInitConn(10);
        pool.setMinConn(5);
        pool.setMaxConn(250);
        pool.setMaintSleep(30);
        pool.setNagle(false);
        pool.setSocketTO(3000);
        pool.setAliveCheck(true);
        pool.initialize();
        // 新建client:默认从
        MemCachedClient memCachedClient = new MemCachedClient(); 
        for (int i = 0; i < 10; i++) {
            // 添加数据
            boolean success = memCachedClient.set("" + i, "Hello!");
            // 获取数据
            String result = (String) memCachedClient.get("" + i);
            System.out.println(String.format("set( %d ): %s", i, success));
            System.out.println(String.format("get( %d ): %s", i, result));
        }
    }
}



2.4 memcached使用-hibernate
影响中hibernate会到过memcached,由于很长时间没有用过hibernate,一直用的是ibatis,所以不再建实例了

memcached是对象缓存服务器,所以与hibernate集成是个不错的场景。这也是相比于redis的一个优势


2.5 memcached分布式原理






参考网站:
JAVA客户端API调用memcached两种方式
http://www.cnblogs.com/longshiyVip/p/4889817.html

http://www.cnblogs.com/sunniest/p/4154209.html

Memcached和Memcache安装(64位win7)
http://www.cnblogs.com/wujuntian/p/4791220.html

telnet memcached error: "CLIENT_ERROR bad data chunk"
http://f.dataguru.cn/thread-46013-1-1.html

猜你喜欢

转载自newjava-sina-cn.iteye.com/blog/2378946