发表于: 2018-03-17 23:43:46
0 708
今日完成:
1. memcached启动参数
-p:Memcached的监听端口号,不设置的话Memcached默认的的11211
-U:监听的upd端口,0的时候表示关闭,默认是11211
-l:监听的IP地址,不写的话所有的IP都能访问,写了的话只这IP能访问,要是有多个IP用逗号分隔或者用多个-l就行了,实际应用中应当都是要配置的,不能让任何机器都能访问我们的memcached服务器,只有指定的机器可以访问。
*有时候不配置想让只有固定的机器才能访问的话,可以配置电脑的防火墙只能固定的电脑IP访问。
-d:以后台的方式运行,不占用终端。
-m:最大可使用的内存。
2. memcached安全问题
3. memcached服务器端常用命令
command <key> <flags> <expiration time> <bytes>
<value>
参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节点
value 存储的值(始终位于第二行)
get和gets 多一个描述更新状态的值:
同时使用gets 和cas 命令可以防止使用自上次读取后经过更新的名称/值对
清空缓存
4. redis常用操作:
redis-cli –p 6379 客户端连接redis
key * 查看所用缓存key
redis-cli shutdown 关闭redis
5. redis设置密码
在redis.conf中设置密码,重启redis服务
登陆输入密码auth 密码
设置好密码后项目无法使用redis
配置客户端登陆密码
<bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}"
p:pool-config-ref="redisPoolConfig"/>
配置成功
ps windows配置文件有两个,默认是redis.windows-service.conf
6. 对使用redis的项目压测
jsp页面:
使用redis:259
未使用redis:258
json页面:
使用redis:16
未使用redis:20
7. 理解jar包冲突及其解决办法
maven依赖冲突的问题,这会导致ClassNotFound或者MethodNotFound这样的异常
导致jar包冲突的原因
1、mvn的传递依赖特性:mvn编译打包除了会引入直接申明的依赖,还会引入间接申明的依赖
2、mvn的依赖仲裁规则:
1). 按照项目总控POM的DependencyManager版本声明进行仲裁。
2). 如无仲裁声明,则按照依赖最短路径确定版本。
3). 若相同路径,有严格区间限定的版本优先。
4). 若相同路径,无版本区间,则按照先入为主原则。
3、依赖的scope会影响依赖的影响范围。
maven最短路径依赖:
1.间接依赖路径最短优先
一个项目test依赖了a和b两个jar包。其中a-b-c1.0,d-e-f-c1.1。由于c1.0路径最短,所以项目test最后使用的是c1.0。
2.pom文件中申明顺序优先
有人就问了如果 a-b-c1.0,d-e-c1.1 这样路径都一样怎么办?其实maven的作者也没那么傻,会以在pom文件中申明的顺序那选,如果pom文件中先申明了d再申明了a,test项目最后依赖的会是c1.1
所以maven依赖原则总结起来就两条:路径最短,申明顺序其次。
jar包冲突解决:
1. 查看依赖树
mvn dependency:tree
mvn dependency:tree -Dverbose -Dincludes=asm:asm 查看某一个jar包依赖
mvn dependency:tree -Dverbose -Dexcludes=asm:asm 查看除去次jar包的其他所有依赖
mvn dependency:list 可以看到当前项目已解析的依赖
mvn dependency:analyse 查看依赖的工具
发现jar包冲突
2. idea中直接查看依赖
3. 如果有冲突的版本,可以右击该版本的节点然后Exclude,对应的pom.xml就已经成功修改了
或者直接在pom中设置:
<exclusions>
<exclusion>
<artifactId>spring-oxm</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
ps:jar包全局黑白名单插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>2.1.0</version>
</requireMavenVersion>
<requireJavaVersion>
<version>1.6</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
<execution>
<id>enforce-banned-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>junit:junit</exclude>
<exclude>org.testng:testng</exclude>
<exclude>com.google.collections:google-collections</exclude>
<exclude>commons-logging:commons-logging</exclude>
</excludes>
<includes>
<include>junit:junit:4.8.2:jar:test</include>
<include>cglib:cglib-nodep:jar:2.2</include>
</includes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
8. redis 批量存入list
//re0disTemplate.opsForList().leftPush(KEY, (List<Student>)pjp.proceed());
redisTemplate.opsForList().leftPushAll(KEY, (List<Student>)pjp.proceed());
//result = redisTemplate.opsForList().leftPop(KEY);
result = redisTemplate.opsForList().range(KEY, 0, -1);
明日计划:
1. redis分布式
2. redis实现抢红包
3. xml读取多个配置文件方法
4. 整理
遇到的问题:
1. 项目无法启动,卡住没有报错
解决:memcached被防火墙挡住,链接不上。
2. 性能报告要包括:A.系统当机时的负载 B。TPS稳定时的响应时长 C.系统可以在500MS返回时的TPS???这个没理解需求
收获:
1. memcached和redis基本操作
2. jar包依赖冲突解决
3. redis缓存压测
4. redis设置密码,memcached安全靠限制访问ip
评论