发表于: 2018-01-26 23:21:25
0 602
今天完成的事:
1、Spring Data Redis在service层加缓存
测试结果:
20线程1秒启动循环50次
100线程1秒启动循环1次
下面是昨天memcache的结果
memcache和redis在效果上是一样的,redis的数据类型更多。
2、Spring Data Redis注解式加缓存
遇到的困难:
【1、idea下载依赖包非常非常慢】
1、idea下载依赖的jar包非常慢,699kb下载了3分钟后的进度,而且进度条经常卡住半天不走,打开网页速度很快,之前下载jar包速度也可以啊
一万年后进度条终于走完了,显示下载失败,这块忘记截图了
解决方法:
原因:maven加载jar包过程,默认的是先扫描本地仓库,若本地仓库没有,则扫描远程仓库下载。默认的conf/settings.xml文件没有配置远程仓库,所以扫描的是maven的中央仓库(在国外),所以慢。
解决方法:配置国内镜像(如阿里云的镜像)
步骤:项目--->右键maven--->open setting.xml或者create setting.xml
复制代码重启idea,速度飞起来,
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>uk</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
<mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<!-- <url>http://192.168.1.100:8081/nexus/content/groups/public/</url>-->
<url>http://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
【问题2-redis添加到win服务】
1、redis服务器没有开启的报错
win开启redis方法:进入redis安装目录--->cmd进入dos窗口---->redis-server,关闭dos窗口则redis关闭
2、redis添加到win服务失败
输入命令后显示失败,这个晚点再找原因,先测试redis
【问题3、测试redis报错】
这是一个眼熟的错误,按照网上demo也遇到了这个问题,
先上测试类代码
@Test
public void testRedis(){
// 向缓存中添加数据
redisUtil.set("123","123456");
// 从缓存中取数据
String o = (String) redisUtil.get("123");
System.out.println(o);
// 判断缓存中是否存在key值为123的数据
boolean b = redisUtil.exists("123");
System.out.println(b);
}
百度这个异常的有三种原因:
(1).第一个常见原因jar包中确实没有这个方法,所以虚拟机根本没有加载这个方法。
(2).第二个常见原因是jar包冲突了。导致虚拟机不知道加载哪一个,所以就导致了加载失败,从而找不到这个方法。
(3).第三个,也许就是包含在第二种情况中,该方法只有抽象定义,而没有具体实现。我今天的遇到的是第二种吧。
回到项目:
看报错的具体信息,junit,在maven的jar包关系图中,红线只有和sl4j相关的,并没有junit,
问题定位到junit,写一个最简单的junit测试,也是这个错误,莫名的开心
仔细看pom文件,将所有的junit的依赖放在一起,上面两个是后来注释掉的,问题解决,
<!--单元测试依赖 -->
<!--<dependency>-->
<!--<groupId>junit</groupId>-->
<!--<artifactId>junit</artifactId>-->
<!--<version>4.12</version>-->
<!--<scope>test</scope>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>org.junit.jupiter</groupId>-->
<!--<artifactId>junit-jupiter-api</artifactId>-->
<!--<version>5.1.0-M1</version>-->
<!--</dependency>-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
回顾:现在看这个报错信息,一看就应该定位在junit的上,之前一看没跑通,想当然的认为是其他的问题,因为在加redis相关东西之前我的代码是没问题的。
我想这个依赖是怎么添加到pom文件中的,回想了一下,在写代码时应该是有一个右键之后有选项add * dependency,我再找这个没找到,下次遇到再说。
【问题4、redis注解】
【1】获取不到redis连接
这个博客将获取不到连接的原因总结的很全面
http://carlosfu.iteye.com/blog/2338597
我的原因很低级,在博客中没有找到匹配的,是ip写成是服务器ip
redis.host=127.0.0.1
【2、缓存混乱】
单元测试可以跑通,在tomcat启动报错500,一脸懵逼
取消注解后正常访问,只用head一个注解正常访问,就是这样排除
最后发现原因所在,三个方法的缓存混乱,
正确的注解,为每个缓存配上键值对,
@Cacheable(value = "getAll" , key = "'Study'")
之前是只写了value值,系统会默认创建一个key,所有方法的key是同一个,所以会出现study方法的缓存中内容读出来是head的缓存
收获:
redis终于跑通了
明天计划:
整理一下redis两种方式的流程及各个配置文件,学习redis的知。
禅道:http://task.ptteng.com/zentao/my-task.html
评论