发表于: 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
然后更改配置文件
输入 /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.29
是否有延期风险:暂无
禅道链接:http://task.ptteng.com/zentao/my-task.htm
评论