spring中整合memcached,以及创建memcache的put和get方法

spring中整合memcached,以及创建memcache的put和get方法:

1:在项目中导入memcache相关的jar包

2:memcache在spring.xml的配置:

代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans
 5 http://www.springframework.org/schema/beans/spring-beans.xsd">
 6     <!-- XMemcachedClientFactoryBean工厂配置-->
 7     <bean id="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">
 8         <property name="servers" value="${memcache.servers}"/>
 9         <property name="weights" value="${memcache.servers.weight}"/>
10         <property name="sessionLocator">
11             <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator"/>
12         </property>
13         <property name="transcoder">
14             <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder"/>
15         </property>
16         <property name="bufferAllocator">
17             <bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator"/>
18         </property>
19     </bean>
20     <!--自己封装的api类-->
21     <bean class="com.floor.shop.map.MemcachedAccess">
22         <property name="memcachedClient" ref="memcachedClient"/>
23     </bean>
24 </beans>
View Code

3:memcache在db.properties中的配置:

4:在spring的主配置文件中引入memcache的相关配置:

5:自己封装好的memcache方法(get(),   put(),  flushAll() )

 1 package com.floor.shop.map;
 2 
 3 import net.rubyeye.xmemcached.MemcachedClient;
 4 import net.rubyeye.xmemcached.exception.MemcachedException;
 5 
 6 import java.util.concurrent.TimeoutException;
 7 
 8 public class MemcachedAccess {
 9     private MemcachedClient memcachedClient;
10     /*
11      * 将memcachedClient交给spring管理
12      * (就需提供下面的get和set方法)
13      */
14     public MemcachedClient getMemcachedClient() {
15         return memcachedClient;
16     }
17 
18     public void setMemcachedClient(MemcachedClient memcachedClient) {
19         this.memcachedClient = memcachedClient;
20     }
21 
22     /*
23      *   memcache基于HashMap所以通过key,value的形式放值和取值。
24      *   memcachedClient提供了add方法进行放值,add方法需要传递三个参数String var1, int var2, Object var3
25      *   分别表示:var1:key;  var2:缓存的时间; var3:key对应的值
26      *   对外提供put方法往memcache里面放值:
27      */
28     public boolean put(String key, Integer time, String value) {
29         try {
30             boolean add = memcachedClient.add(key, time, value);
31             return add;
32         } catch (TimeoutException e) {
33             e.printStackTrace();
34         } catch (InterruptedException e) {
35             e.printStackTrace();
36         } catch (MemcachedException e) {
37             e.printStackTrace();
38         }
39         return false;
40     }
41 
42     /*
43      *如果把时间写成死的数据:1天,就不需要传时间进来
44      * memcache的缓存时间是以秒为单位,默认缓存好像是一个月。
45      */
46     public boolean put(String key , String value) {
47         try {
48             boolean add = memcachedClient.add(key, 1*24*60, value);
49             return add;
50         } catch (TimeoutException e) {
51             e.printStackTrace();
52         } catch (InterruptedException e) {
53             e.printStackTrace();
54         } catch (MemcachedException e) {
55             e.printStackTrace();
56         }
57         return false;
58     }
59 
60     /*
61      * 对外提供取值的get方法
62      */
63     public String get(String key){
64         try {
65             String value = (String)memcachedClient.get(key);
66             return value;
67         } catch (TimeoutException e) {
68             e.printStackTrace();
69         } catch (InterruptedException e) {
70             e.printStackTrace();
71         } catch (MemcachedException e) {
72             e.printStackTrace();
73         }
74         return null;
75     }
76 
77     //对外提供清除所有缓存的方法:
78     public void flushAll(){
79         try {
80             memcachedClient.flushAll();
81         } catch (TimeoutException e) {
82             e.printStackTrace();
83         } catch (InterruptedException e) {
84             e.printStackTrace();
85         } catch (MemcachedException e) {
86             e.printStackTrace();
87         }
88     }
89 
90 }
View Code
原文地址:https://www.cnblogs.com/dw3306/p/9341956.html