ssm+redis整合
一、首先eclipse搭建好Maven环境,如何不会搭建可以参考eclipse配置maven
二、搭建好SSM框架
三、在pom.xml中引入java里redis的依赖(jedis)
<!--spring-data-redis-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.1.0</version>
</dependency>
注意:若报以下错误,是因为Jedis版本与spring版本不适配的问题
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectionF
actory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: redis.clients.jedis.JedisShardInfo.se tTimeout(I)V Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectionFactory' defined in class path resource [applicationContext. xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: redis.clients.jedis.JedisShardInfo.setTimeout(I)V
经本人运行配置后
spring 3.24 、spring-data-redis1.1.0 、 Jedis 2.1.0 适配,如果还是报该错误,请到网上查找其他适配版本,本人也是调试了很多版本才配置成功。
四、在spring配置文件中配置reids
本人是在spring-mybatis.xml中加入配置,读者可以单独创建一个spring-redis.xml单独配置。
<!-- jedis -->
<!-- redis配置 -->
<!-- redis连接池 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="300" />
<property name="minIdle" value="100"></property>
<!-- <property name="maxTotal" value="500" /> -->
<property name="maxWait" value="3000" />
<property name="testOnBorrow" value="true"/>
</bean>
<!-- redis连接工厂 -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
<property name="hostName" value="${redis.hostName}"></property>
<property name="port" value="${redis.port}"></property>
<property name="password" value="${redis.password}"></property>
<property name="poolConfig" ref="jedisPoolConfig"></property>
</bean>
<!-- redis操作模板,这里采用尽量面向对象的模板 -->
<bean id="jedisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"></property>
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> <!--JdkSerializationRedisSerializer -->
</property>
<property name="hashValueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
<!-- <property name="enableTransactionSupport" value="true"></property> -->
</bean>
五、创建redis工具类
RedisTemplateUtil.java
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
public class RedisTemplateUtil {
@Resource
private RedisTemplate<String, Object> redisTemplate;
public void set(String key, Object value) {
ValueOperations<String, Object> valueOperations = redisTemplate
.opsForValue();
valueOperations.set(key, value);
}
public Object get(String key) {
return redisTemplate.opsForValue().get(key);
}
public void setList(String key, List<?> value) {
ListOperations<String, Object> listOperations = redisTemplate
.opsForList();
listOperations.leftPush(key, value);
}
public Object getList(String key) {
return redisTemplate.opsForList().leftPop(key);
}
public void setSet(String key, Set<?> value) {
SetOperations<String, Object> setOperations = redisTemplate.opsForSet();
setOperations.add(key, value);
}
public Object getSet(String key) {
return redisTemplate.opsForSet().members(key);
}
public void setHash(String key, Map<String, ?> value) {
HashOperations<String, Object, Object> hashOperations = redisTemplate
.opsForHash();
hashOperations.putAll(key, value);
}
public Object getHash(String key) {
return redisTemplate.opsForHash().entries(key);
}
public void delete(String key) {
redisTemplate.delete(key);
}
}
六、测试
@Resource
private RedisTemplate<String, Object> redisTemplate;
public void test(){
RedisTemplateUtil redisTemplateUtil = new RedisTemplateUtil();//可以可不用
List<Vt_Email> list = new ArrayList<Vt_Email>();
for (int i = 0; i < 2; i++) {
Vt_Email vte = new Vt_Email();
vte.setId(i);
vte.setEmailName("generaterfq"+i);
vte.setStatus("sent"+i);
vte.setCreateBy("administrator"+i);
vte.setRemark("");
vte.setRfqNo("test"+i);*/
list.add(vte);
redisTemplate.opsForList().leftPush("test2",vte.toString());
}
System.out.println(redisTemplate.opsForList().leftPop("test2"));
List<Vt_Email> list2 = (List<Vt_Email>) redisTemplate.opsForList().leftPop("test2");
redisTemplate.delete("test2");
redisTemplateUtil.setList("testlist", list);
}
(待完善)
还没有评论,来说两句吧...