发表于: 2017-09-29 21:35:05

1 854


今天完成的事情:使用Spring整合redis  用了注解的方法 

                            不得不说注解的方法就是好用 简洁 

首先先引入jar包 这个看起来容易 实际上很容易出现各种问题 就需要自己不断的调整 

<dependency>
 <groupId>redis.clients</groupId>
 <artifactId>jedis</artifactId>
 <version>2.9.0</version>
</dependency>
<dependency>
 <groupId>org.springframework.data</groupId>
 <artifactId>spring-data-redis</artifactId>
 <version>1.6.0.RELEASE</version>
 <exclusions>
   <exclusion>
     <artifactId>spring-core</artifactId>
     <groupId>org.springframework</groupId>
   </exclusion>
 </exclusions>
</dependency>

这两个是一般都没有的需要新添加的 jar包

可能会奇怪 第二个jar包 exclusions是什么 这个是当时感觉出现冲突 使用依赖树剔除了里面的Spring-core

意思就是 不使用这个包里面的Spring-core 

<dependency>
 <groupId>commons-pool</groupId>
 <artifactId>commons-pool</artifactId>
 <version>1.5.6</version>
</dependency>

这个包是需要的 一般都有  注意不要重复

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>${spring.version}</version>
 <exclusions>
   <exclusion>
     <artifactId>spring-core</artifactId>
     <groupId>org.springframework</groupId>
   </exclusion>
 </exclusions>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-beans</artifactId>
 <version>${spring.version}</version>
 <exclusions>
   <exclusion>
     <artifactId>spring-core</artifactId>
     <groupId>org.springframework</groupId>
   </exclusion>
 </exclusions>
</dependency>

这两个包 一个原来没有 然后就报错找不到 我把它新加上的 

另外一个跟原来的不太一样 我把原来的注释掉了 也是新添加的 原来的是下面这个

  <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context-support</artifactId>
     <version>${spring.version}</version>
     <exclusions>
       <exclusion>
         <artifactId>spring-core</artifactId>
         <groupId>org.springframework</groupId>
       </exclusion>
     </exclusions>
   </dependency>

主要的变动就是这几项 pom文件虽然常用 但是出了问题 改正好并不容易 花了一个上午的时间 大家平时使用各种jar包的时候还是要注意的 

然后是 缓存的配置 这里看很多都是用的xml 网上参照了一个 使用的注解

网站如下  http://blog.csdn.net/defonds/article/details/48716161/

@Configuration
@EnableCaching
public class RedisCacheConfig extends  CachingConfigurerSupport {
@Bean
   public JedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();

       // Defaults
       redisConnectionFactory.setHostName("127.0.0.1");
       redisConnectionFactory.setPort(6379);
       return redisConnectionFactory;
   }

@Bean
   public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
       redisTemplate.setConnectionFactory(cf);
       return redisTemplate;
   }

@Bean
   public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);

       // Number of seconds before expiration. Defaults to unlimited (0)
       cacheManager.setDefaultExpiration(3000); // Sets the default expire time (in seconds)
       return cacheManager;
   }

然后在Spring配置文件里 扫描他的位置

<context:component-scan base-package="com.jnshu.redis" />

实际使用中 借助了事务管理 

直接是在实现类里使用几个注解 全部由spring来管理  根本不用我们来管理 解耦的程度很高

@Service
@Transactional(propagation= Propagation.REQUIRED, rollbackFor=Exception.class)
public class T10TwoServiceImpl implements T10TwoService {
@Cacheable(value = "Userselect",key = "'selectByName'")
public List<T10Two> getAll2() {

List<T10Two> t10Twos =t10TwoMapper.getAll();
       for (T10Two student : t10Twos) {
System.out.println(student);
       }

return t10Twos;

   }

然后不要忘记在Spring配置文件里加上 事务

<!-- transaction config related... start -->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   <property name="dataSource" ref="dataSource" />
</bean>
<!-- transaction config related... end -->

注意这里引入的数据源 与原来的一致

整体配置并不是很复杂 目的就是把一切交给Spring 

不用向memcahe那样 在逻辑力判断是否有缓存 有就取出来没有存进去 等  全部自动 

实际使用中还是碰到了很多问题 下面再谈 不过都解决了

本地调好了 服务器配置redis

下载压缩包到了root里面 

移动到home 里面解压缩

新建一个bin 一个conf

然后更改配置文件

用vi编辑器 vi redis.conf  改成后台启动

输入 /daemonize(命令解析:向下查找daemonize字符串) 找到daemonize,将no改成yes,保存后退出即可


启动redis。启动一定要指定配置文件的位置。


然后两个命令  停止redis 以及客户端链接

./redis-cli shutdown

./redis-cli

然后为了远程连接 还是需要配置配置文件

首先注释掉原有的本地ip

然后关闭保护模式  yes改成no

然后阿里云开放端口 6379 把项目的数据库改成远程

手动导入



遇到的问题:运行起来各种问题 首先引入的一些注解 就爆红  继承那个类也红

      搜了一下是pom文件缺失 自行添加了相应的jar

       然后还是各种错误 

      不是这个jar包里的什么什么找不到 就是那个jar包有问题

      根据不同的错误 自己研究改了了几个jar包 有几个是跟原有的可能有冲突的 

       还用了依赖树去除可能重复的jar包里的jar

      最后 感觉一定是版本冲突的问题了 

     把所有Spring的核心包全部指定为一致的版本 尤其是自己新加的那几个

<!-- spring版本号 -->
<spring.version>4.2.6.RELEASE</spring.version>

      终于运行起来了

     然后 一直找不到jedis 没有连接

     百度一下 忽然想起来 我又忘了开服务了 

     把服务开开 错误不变 想了想当时配置文件的ip有问题 网上的那个没指定本地 

     ok 这次终于成功了 自己试了一下 一开始走数据库会打印出来写的sout  

     然后在访问页面就不出来了 没走数据库走的缓存
收获:学会了使用redis

任务开始时间:9.23

         预计完成时间:9.29

         是否有延期风险:暂无

禅道链接:http://task.ptteng.com/zentao/my-task.htm




返回列表 返回列表
评论

    分享到