Java應用程序如何使用memcached

Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載,被許多大型門戶網站廣泛使用。
工程所需jar包下載地址:https://github.com/gwhalin/Memcached-Java-Client/downloads
commons-pool-1.5.6.jar
java_memcached-release_2.6.6.jar
slf4j-api-1.6.1.jar
slf4j-simple-1.6.1.jar
windows下memcached的安裝和基本使用我的博客也有介紹。

代碼片段(2)[全屏查看所有代碼]

1. [代碼][Java]代碼    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package com.memcached.demo;
 
import java.util.Date;
import java.util.Map;
 
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
 
 
public class MemcachedHelper {
 
    private static MemCachedClient mcc = new MemCachedClient();
     
    static {
        //創建Socket連接池實例
        SockIOPool spool = SockIOPool.getInstance();       
        String[] servers = {"127.0.0.1:11211"};
        Integer[] weights = {3};       
        //設置服務器信息
        spool.setServers(servers);
        spool.setWeights(weights);     
        spool.setFailover(true);       
        //設置初始連接數、最小和最大連接數以及最大處理時間
        spool.setInitConn(5);
        spool.setMinConn(5);
        spool.setMaxConn(250);
        spool.setMaxIdle(1000 * 60 * 60 * 6);         
        //設置主線程睡眠時間
        spool.setMaintSleep(30);          
        //設置TCP參數、連接超時等
        spool.setNagle(false);
        spool.setSocketTO(3000);
        spool.setSocketConnectTO(0);
        spool.setAliveCheck(true);        
        //初始化連接池
        spool.initialize();
    }  
     
    protected MemcachedHelper(){
    }
     
    protected static MemcachedHelper instance = new MemcachedHelper();
     
    /**
     * 爲受保護的對象提供一個公共的訪問方法
     */
    public static MemcachedHelper getInstance () {
       return instance;
    }
     
    /**
     * 插入一條記錄到緩存服務器中
     * @param key
     * @param value
     * @return
     */
    public boolean add(String key,Object value) {
       return mcc.add(key, value);
    }
    /**
     * 插入一條記錄到緩存服務器,並設置過期時間,單位爲秒
     * @param key
     * @param value
     * @param expiry
     * @return
     */
    public boolean add (String key,Object value,Date expiry) {
       return mcc.add(key, value,expiry);
    }
    /**
     * 根據KEY替換緩存服務器中的數據
     * @param key
     * @param value
     * @return
     */
    public boolean replace (String key,Object value) {
       return mcc.replace(key, value);
    }
     
    public boolean replace (String key,Object value,Date expiry) {  
       return mcc.replace(key, value, expiry);
    }
    /**
     * 當KEY不存在時將數據添加到緩存服務器中
     * 當KEY存在時則替換原來的數據
     * @param key
     * @param value
     * @return
     */
    public boolean set(String key,Object value){
        return mcc.set(key, value);
    }
     
    public boolean set(String key,Object value,Date expiry){
        return mcc.set(key, value,expiry);
    }   
   
    /**
     * 根據KEY刪除緩存服務器中的數據
     * @param key
     * @return
     */
    public boolean delete(String key){
        return mcc.delete(key);
    }  
    /**
     * 根據指定的KEY獲取數據
     */
    public Object get(String key) {
       return mcc.get(key);
    }
     
    /**
     * 批量獲取多個KEY的數據
     * @param keys
     * @return
     */
    public Map<String,Object> getMulti(String[] keys){
        return mcc.getMulti(keys);
    }
     
    /**
     * 判斷指定的KEY是否已經存在
     * @param key
     * @return
     */
    public boolean keyExists(String key){
        return mcc.keyExists(key);
    }
}

2. [代碼][Java]代碼    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.memcached.demo;
 
import java.util.Date;
 
import org.junit.Test;
 
public class MemcachedTimeTest {
     
    private MemcachedHelper install = MemcachedHelper.getInstance();
     
    private String key = "YE1000";
     
    @Test
    public void testAdd(){
        String value = "這是一個Demo測試案例!";
        install.add(key, value, new Date(1000 * 10));
    }
 
    @Test
    public void testSet(){
        String value = "這是一個Demo測試案例!";
        install.set(key, value, new Date(1000 * 20));
    }
     
    @Test
    public void testGet(){     
        String value = (String)install.get(key);
        System.out.println(value);
    }
     
    @Test
    public void testDelete(){
        install.delete(key);
    }
     
    @Test
    public void testKeyExists(){
        System.out.println(install.keyExists(key));
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章