Memcached服務端安裝

ymc4 9年前發布 | 23K 次閱讀 緩存服務器 memcached

libevent安裝

cd /tmp
wget http://monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
tar -zxf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure --prefix=/opt/libevent/
make
make install

Memcached安裝

cd /tmp
wget -N http://www.memcached.org/files/memcached-1.4.17.tar.gz
tar -zxf memcached-1.4.17.tar.gz
cd memcached-1.4.17
./configure --prefix=/opt/memcached --enable-64bit --with-libevent=/opt/libevent
make
make install

編寫Memcached啟動腳本

vi /etc/init.d/memcached
#!/bin/sh
# chkconfig: - 50 50
# description: memcached
# 以下要自己配置
CMD=/opt/memcached/bin/memcached
MEMORY=128
USER=root
HOST=master
PORT=11211
CONNECTION=32
PID=/tmp/memcached.pid

start() {
    echo -n $"memcached starting... "  
    $CMD -d -m $MEMORY -u $USER -l $HOST -p $PORT -c $CONNECTION -P $PID
    echo
}

stop() {
    echo -n $"memcached shutting down... "  
    kill `cat $PID`
    echo
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
    echo $"Usage: $0 {start|stop|restart}"  
    exit 1
esac
exit 0

將memcached加入系統啟項

chmod +x /etc/init.d/memcached
chkconfig --add /etc/init.d/memcached
chkconfig --level 35 memcached on

chkconfig --level 35 iptables off

啟動Memcached

/opt/memcached/bin/memcached -d -m 128 -u root -l master -p 11211 -c 32 -P /tmp/memcached.pid

service memcached restart

基于上面,其他一些選項的含義

-d  指定memcached進程作為一個守護進程啟動
-m <num>    指定分配給memcached使用的內存,單位是MB
-u <username>   運行memcached的用戶
-l <ip_addr>    監聽的服務器IP地址,如果有多個地址的話,使用逗號分隔,格式可以為“IP地址:端口號”,例如:-l 指定192.168.0.184:19830,192.168.0.195:13542;端口號也可以通過-p選項指定
-p <num>    Memcached監聽的端口,要保證該端口號未被占用
-c <num>    設置最大運行的并發連接數,默認是1024
-R <num>    為避免客戶端餓死(starvation),對連續達到的客戶端請求數設置一個限額,如果超過該設置,會選擇另一個連接來處理請求,默認為20
-k  設置鎖定所有分頁的內存,對于大緩存應用場景,謹慎使用該選項
-P  保存memcached進程的pid文件
-s <file>   指定Memcached用于監聽的UNIX socket文件
-a <perms>  設置-s選項指定的UNIX socket文件的權限
-U <num>    指定監聽UDP的端口,默認11211,0表示關閉
-M  當內存使用超出配置值時,禁止自動清除緩存中的數據項,此時Memcached不可以,直到內存被釋放
-r  設置產生core文件大小
-f <factor> 用于計算緩存數據項的內存塊大小的乘數因子,默認是1.25
-n  為緩存數據項的key、value、flag設置最小分配字節數,默認是48
-C  禁用CAS
-h  顯示Memcached版本和摘要信息
-v  輸出警告和錯誤信息
-vv 打印信息比-v更詳細:不僅輸出警告和錯誤信息,也輸出客戶端請求和響應信息
-i  打印libevent和Memcached的licenses信息
-t <threads>    指定用來處理請求的線程數,默認為4
-D <char>   用于統計報告中Key前綴和ID之間的分隔符,默認是冒號“:”
-L  嘗試使用大內存分頁(pages)
-B <proto>  指定使用的協議,默認行為是自動協商(autonegotiate),可能使用的選項有auto、ascii、binary。
-I <size>   覆蓋默認的STAB頁大小,默認是1M
-F  禁用flush_all命令
-o <options>    指定逗號分隔的選項,一般用于用于擴展或實驗性質的選項

停止Memcached

ps -ef | grep memcached
kill -9 <PID>

Java客戶端 - XMemcached客戶端

spring.xml

<!-- 啟動參數加入 -Dxmemcached.jmx.enable=true 可啟動jmx支持 -->
<!-- 監控端可通過service:jmx:rmi:///jndi/rmi://host:7077/xmemcachedServer連接監控 -->
<bean name="memcachedClient"
    class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean"
    destroy-method="shutdown">
    <!-- servers節點列表格式 主節點1:port,主節點1備份:port 主節點2:port,主節點2備份:port -->
    <!--可以不設置備份節點,主備節點都好分割,不同的主備分組用空格分隔 -->
    <property name="servers">
        <value>${cache.memcacheHost}</value>
    </property>
    <!-- 權重 -->
    <property name="weights">
        <list>
            <value>${cache.memcacheHostWeights1}</value>
        </list>
    </property>
    <!-- 開啟sasl驗證需要配置此部分 -->
    <!-- <bean name="server1" class="java.net.InetSocketAddress"> <constructor-arg> 
        <value>host1</value> </constructor-arg> <constructor-arg> <value>port1</value> 
        </constructor-arg> </bean> <property name="authInfoMap"> <map> <entry key-ref="server1"> 
        <bean class="net.rubyeye.xmemcached.auth.AuthInfo" factory-method="typical"> 
        <constructor-arg index="0"> <value>cacheuser</value> </constructor-arg> <constructor-arg 
        index="1"> <value>123456</value> </constructor-arg> </bean> </entry> </map> 
        </property> -->
    <!-- nio線程數最好是cpu核數-1 -->
    <property name="connectionPoolSize">
        <value>${cache.memcacheConnectionPoolSize}</value>
    </property>
    <!--默認超時時間 -->
    <property name="opTimeout">
        <value>${cache.opTimeout}</value>
    </property>
    <!-- 使用二進制保存 -->
    <property name="commandFactory">
        <!-- <bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory"></bean> -->
        <bean class="net.rubyeye.xmemcached.command.TextCommandFactory"></bean>
    </property>
    <!-- 分布式hash一致策略 -->
    <property name="sessionLocator">
        <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"></bean>
    </property>
    <!-- 序列化轉換 -->
    <property name="transcoder">
        <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" />
    </property>
    <!-- buffer分配策略 -->
    <property name="bufferAllocator">
        <bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"></bean>
    </property>
    <!-- 在hash一致模式下節點失敗路由到下一節點,關閉快速失敗模式 -->
    <property name="failureMode" value="false" />
</bean>
 本文由用戶 ymc4 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!