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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!