Spring与MemCached结合的配置方法

#本人学习笔记仅供参考

#本文介绍了Spring和MemCached的基本配置方法…

首先需要添加依赖:

1
2
3
4
5
<dependency>
<groupId>com.whalin</groupId>
<artifactId>Memcached-Java-Client</artifactId>
<version>3.0.0</version>
</dependency>

添加MemCacheUtil类:

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
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://code.alibabatech.com/schema/dubbo
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd">
<!-- Memcached配置 -->
<bean id="memcachedPool" class="com.whalin.MemCached.SockIOPool"
factory-method="getInstance" init-method="initialize" destroy-method="shutDown">
<constructor-arg>
<value>memcachedPool</value>
</constructor-arg>
<property name="servers">
<list>
<value>${memcached.server}</value>
</list>
</property>
<property name="initConn">
<value>${memcached.initConn}</value>
</property>
<property name="minConn">
<value>${memcached.minConn}</value>
</property>
<property name="maxConn">
<value>${memcached.maxConn}</value>
</property>
<property name="maintSleep">
<value>${memcached.maintSleep}</value>
</property>
<property name="nagle">
<value>${memcached.nagle}</value>
</property>
<property name="socketTO">
<value>${memcached.socketTO}</value>
</property>
</bean>
</beans>

然后是MemCache.properties文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
设置服务器地址
该端口号默认为11211
memcached.server=localhost:11211
容错
memcached.failOver=true
设置初始连接数
memcached.initConn=20
设置最小连接数
memcached.minConn=10
设置最大连接数
memcached.maxConn=250
设置连接池维护线程的睡眠时间
memcached.maintSleep=3000
设置是否使用Nagle算法(Socket的参数),如果是true在写数据时不缓冲,立即发送出去
memcached.nagle=false
设置socket的读取等待超时时间
memcached.socketTO=3000
设置连接心跳监测开关
memcached.aliveCheck=true

然后还需要告诉Spring Memcache的配置文件所在的位置
在application中添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--memcached配置文件位置-->
<import resource="classpath:memcached-content.xml"/>
<!--memcached的配置文件的配置文件路径-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:memcache.properties</value>
</list>
</property>
</bean>
```
<font size=5 > 现在已经配置好了,如果想要运行的话还需要建立一个实体类这里就不贴了!</font>
在service层建立一个对应的dao接口可以直接从mapper接口直接copy然后在service包里建一个impl包,
实现并重写service dao接口

这是service dao接口:

1
2
3
4
5
6
7
8
9
10
11
12
public interface CategoryMapper {
int add(Category category);
void delete(int id);
Category get(Category category);
int update(Category category);
List<Category> list();
}

然后是实现service接口:

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
@Service
public class CategoryServiceImpl implements CategoryService {
@Autowired
private CategoryMapper categoryMapper;
@Override
public int add(Category category) {
return categoryMapper.add(category);
}
@Override
public void delete(int id) {
}
@Override
public Category get(Category category) {
System.out.println("在缓存中寻找");
Category c=new Category();
// 设置key
String key = "category_id(" + category.getId() + ")";
// 通过key获取Category对象
c = (Category) MemcachedUtil.get(key);
// 在缓存中寻找key
if (c == null) {
// 如果没找到
c = categoryMapper.get(category);
// 在数据库里找
if (c != null) {
System.out.println("在数据库中找到并添加到缓存");
// 如果在数据库中找到,就放人缓存里,有效时间为10分钟
MemcachedUtil.set(key, c,new Date(1000*64*10));
}
}
return c;
}
@Override
public int update(Category category) {
return categoryMapper.update(category);
}
public List<Category> list() {
return categoryMapper.list();
}
}

这里只重写了get方法其他方法那么自己探索吧

源码地址:www.github.com/wudihui/Task_6

第一次写博客,不知道有没有人看!
博主也是新手,写博客不过是记录自己学习的点滴,写的不好莫怪,有错的地方欢迎指正!

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
,