Memcached初探

初探的意思就是装起来玩儿一把,最简单的,所以这里写的东西不一定对,小心!

1. install

2. simple client call

-------1--------

装Memcached必须先装Libevent。 下面是在mac上用brewhome装的,简单。相信自己手动装的话也难度不大。

Libevent - brew install libevent - /usr/local/Cellar/libevent/2.0.21_1

Memcached - brew install memcached - /usr/local/Cellar/memcached/1.4.20

根其他很多软件如maven,ant之类的一样,安装好的目录下面有bin目录。进去执行如下命令运行即可。


Running Memcached:

Go to memcached install path/bin$ 

sudo ./memcached -p 11212 -m 64 -u root -vv 

sudo ./memcached -p 11211 -m 64 -u root -d

第二行意思是以关掉命令行也不会关掉Memecached。

命令的参数能猜个大概:

-p port

-m memory size(MB)

-u user

后面的自己查吧

--------2--------

memcached运行好在那边之后,就在那边孤独的运行着了。 Memcached是和语言无关的,也就是说java,php什么的都可以调用它。所以,调用它的client端有很多实现。这里的简单例子是用的google的xmemcached

<!-- xmemcached - https://code.google.com/p/xmemcached/ -->
        <dependency>
              <groupId>com.googlecode.xmemcached</groupId>
              <artifactId>xmemcached</artifactId>
              <version>2.0.0</version>
         </dependency>
贴代码这种方式不是太好,贴个小片段
public void testXmemcachedSimple() throws Exception {
    MemcachedClient client = new XMemcachedClient("localhost", 11212);

    String inputString = "Hello Memcached!";
    // store a value for one hour(synchronously).
    client.set("key", 3600, inputString);
    // Retrieve a value.(synchronously).
    Object someObject = client.get("key");
    // Retrieve a value.(synchronously),operation timeout two seconds.
    someObject = client.get("key", 2000);

    System.out.println("someObject : " + someObject);

    // Touch cache item ,update it's expire time to 10 seconds.
    boolean success = client.touch("key", 10);
    System.out.println("success : " + success);

    // delete value
    client.delete("key");
    }
这里只是最简单的调用方式,可以有pool连接,同时连接多台memcached服务器等。
google链接里所有的例子都有,很简单,但是考虑到在墙内登陆不方便,所以这里贴一点意思一下。
链接:
https://code.google.com/p/xmemcached/

Memcached可以支持分布式部署,但是它们之间不是做数据同步的。而是对Client端来说是同一个而已。所以update持久化的数据必须同时update cacahe中的。

Spring 配置:

<bean name="memcachedClient"
        class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown">
        <property name="servers">
            <value>localhost:11212 192.168.234.81:11212</value>
        </property>
        <!-- server's weights -->
        <property name="weights">
            <list>
                <value>1</value>
                <value>2</value>
            </list>
        </property>
        <!-- nio connection pool size -->
        <property name="connectionPoolSize" value="3"></property>
        <!-- Use binary protocol,default is TextCommandFactory -->
        <property name="commandFactory">
            <bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory"></bean>
        </property>
        <!-- Distributed strategy -->
        <property name="sessionLocator">
            <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean>
        </property>
        <!-- Serializing transcoder -->
        <property name="transcoder">
            <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" />
        </property>
        <!-- ByteBuffer allocator -->
        <property name="bufferAllocator">
            <bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean>
        </property>
    </bean>


更深层次的用法就不会了^_^











你可能感兴趣的:(memcached)