发表于: 2018-03-17 23:43:46

0 709


今日完成:

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     存储的值(始终位于第二行)

 

getgets  多一个描述更新状态的值:

 

同时使用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页面:

使用redis259

未使用redis258

json页面:

使用redis16

未使用redis20

7.    理解jar包冲突及其解决办法

maven依赖冲突的问题,这会导致ClassNotFound或者MethodNotFound这样的异常

导致jar包冲突的原因

1mvn的传递依赖特性:mvn编译打包除了会引入直接申明的依赖,还会引入间接申明的依赖

2mvn的依赖仲裁规则:

    1. 按照项目总控POMDependencyManager版本声明进行仲裁。

    2. 如无仲裁声明,则按照依赖最短路径确定版本。

    3. 若相同路径,有严格区间限定的版本优先。

    4. 若相同路径,无版本区间,则按照先入为主原则。

3、依赖的scope会影响依赖的影响范围。

 

maven最短路径依赖:

1.间接依赖路径最短优先

         一个项目test依赖了ab两个jar包。其中a-b-c1.0d-e-f-c1.1。由于c1.0路径最短,所以项目test最后使用的是c1.0

2.pom文件中申明顺序优先

有人就问了如果 a-b-c1.0d-e-c1.1 这样路径都一样怎么办?其实maven的作者也没那么傻,会以在pom文件中申明的顺序那选,如果pom文件中先申明了d再申明了atest项目最后依赖的会是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.系统当机时的负载 BTPS稳定时的响应时长 C.系统可以在500MS返回时的TPS???这个没理解需求

收获:

1.       memcachedredis基本操作

2.       jar包依赖冲突解决

3.       redis缓存压测

4.       redis设置密码,memcached安全靠限制访问ip



返回列表 返回列表
评论

    分享到