发表于: 2018-01-26 23:21:25

0 603


今天完成的事:


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




返回列表 返回列表
评论

    分享到