ssm+redis整合

落日映苍穹つ 2022-03-20 07:30 285阅读 0赞

一、首先eclipse搭建好Maven环境,如何不会搭建可以参考eclipse配置maven

二、搭建好SSM框架

三、在pom.xml中引入java里redis的依赖(jedis)

  1. <!--spring-data-redis-->
  2. <dependency>
  3. <groupId>org.springframework.data</groupId>
  4. <artifactId>spring-data-redis</artifactId>
  5. <version>1.1.0.RELEASE</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>redis.clients</groupId>
  9. <artifactId>jedis</artifactId>
  10. <version>2.1.0</version>
  11. </dependency>

注意:若报以下错误,是因为Jedis版本与spring版本不适配的问题

  1. Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectionF
  2. 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单独配置。

  1. <!-- jedis -->
  2. <!-- redis配置 -->
  3. <!-- redis连接池 -->
  4. <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
  5. <property name="maxIdle" value="300" />
  6. <property name="minIdle" value="100"></property>
  7. <!-- <property name="maxTotal" value="500" /> -->
  8. <property name="maxWait" value="3000" />
  9. <property name="testOnBorrow" value="true"/>
  10. </bean>
  11. <!-- redis连接工厂 -->
  12. <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
  13. <property name="hostName" value="${redis.hostName}"></property>
  14. <property name="port" value="${redis.port}"></property>
  15. <property name="password" value="${redis.password}"></property>
  16. <property name="poolConfig" ref="jedisPoolConfig"></property>
  17. </bean>
  18. <!-- redis操作模板,这里采用尽量面向对象的模板 -->
  19. <bean id="jedisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
  20. <property name="connectionFactory" ref="jedisConnectionFactory"></property>
  21. <property name="keySerializer">
  22. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
  23. </property>
  24. <property name="hashKeySerializer">
  25. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
  26. </property>
  27. <property name="valueSerializer">
  28. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/> <!--JdkSerializationRedisSerializer -->
  29. </property>
  30. <property name="hashValueSerializer">
  31. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
  32. </property>
  33. <!-- <property name="enableTransactionSupport" value="true"></property> -->
  34. </bean>

五、创建redis工具类
RedisTemplateUtil.java

  1. import java.util.List;
  2. import java.util.Map;
  3. import java.util.Set;
  4. import javax.annotation.Resource;
  5. import org.springframework.data.redis.core.HashOperations;
  6. import org.springframework.data.redis.core.ListOperations;
  7. import org.springframework.data.redis.core.RedisTemplate;
  8. import org.springframework.data.redis.core.SetOperations;
  9. import org.springframework.data.redis.core.ValueOperations;
  10. import org.springframework.stereotype.Service;
  11. public class RedisTemplateUtil {
  12. @Resource
  13. private RedisTemplate<String, Object> redisTemplate;
  14. public void set(String key, Object value) {
  15. ValueOperations<String, Object> valueOperations = redisTemplate
  16. .opsForValue();
  17. valueOperations.set(key, value);
  18. }
  19. public Object get(String key) {
  20. return redisTemplate.opsForValue().get(key);
  21. }
  22. public void setList(String key, List<?> value) {
  23. ListOperations<String, Object> listOperations = redisTemplate
  24. .opsForList();
  25. listOperations.leftPush(key, value);
  26. }
  27. public Object getList(String key) {
  28. return redisTemplate.opsForList().leftPop(key);
  29. }
  30. public void setSet(String key, Set<?> value) {
  31. SetOperations<String, Object> setOperations = redisTemplate.opsForSet();
  32. setOperations.add(key, value);
  33. }
  34. public Object getSet(String key) {
  35. return redisTemplate.opsForSet().members(key);
  36. }
  37. public void setHash(String key, Map<String, ?> value) {
  38. HashOperations<String, Object, Object> hashOperations = redisTemplate
  39. .opsForHash();
  40. hashOperations.putAll(key, value);
  41. }
  42. public Object getHash(String key) {
  43. return redisTemplate.opsForHash().entries(key);
  44. }
  45. public void delete(String key) {
  46. redisTemplate.delete(key);
  47. }
  48. }

六、测试

  1. @Resource
  2. private RedisTemplate<String, Object> redisTemplate;
  3. public void test(){
  4. RedisTemplateUtil redisTemplateUtil = new RedisTemplateUtil();//可以可不用
  5. List<Vt_Email> list = new ArrayList<Vt_Email>();
  6. for (int i = 0; i < 2; i++) {
  7. Vt_Email vte = new Vt_Email();
  8. vte.setId(i);
  9. vte.setEmailName("generaterfq"+i);
  10. vte.setStatus("sent"+i);
  11. vte.setCreateBy("administrator"+i);
  12. vte.setRemark("");
  13. vte.setRfqNo("test"+i);*/
  14. list.add(vte);
  15. redisTemplate.opsForList().leftPush("test2",vte.toString());
  16. }
  17. System.out.println(redisTemplate.opsForList().leftPop("test2"));
  18. List<Vt_Email> list2 = (List<Vt_Email>) redisTemplate.opsForList().leftPop("test2");
  19. redisTemplate.delete("test2");
  20. redisTemplateUtil.setList("testlist", list);
  21. }

(待完善)

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ssm整合

    在mybatis和spring整合后 , 在把springmvc整合进来 在maven里创建web工程 然后进行mybatis和spring的整合步骤(写在其他博客里)