发表于: 2017-06-16 11:53:09

1 1096


今日完成:


把任务五代码项目加上Memcache

学习Memcache操作命令


添加Memcache步骤:

1.在pom.xml文件里添加依赖,这里我用了com.whalin的包,

<dependency>
   <groupId>com.whalin</groupId>
   <artifactId>memcached-Java-Client</artifactId>
   <version>3.0.2</version>

</dependency>

2.写memcache配置文件

#设置服务器地址
memcached.server=localhost:11211

#容错
memcached.failOver=true
#设置初始连接数
memcached.initConn=20
#设置最小连接数
memcached.minConn=10
#设置最大连接数
memcached.maxConn=250

#设置连接池维护线程的睡眠时间
memcached.maintSleep=3000
#设置是否使用Nagle算法(Socket的参数),如果是true在写数据时
memcached.nagle=false
#设置socket的读取等待超时时间
memcached.socketTO=3000
#设置连接心跳监测开关
memcached.aliveCheck=true

3.写sping-memcache文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <!-- Memcached配置 -->
   <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool"
         factory-method="getInstance" init-method="initialize" destroy-method="shutDown" >

       <constructor-arg>
           <value>memCachedPool</value>
       </constructor-arg>

       <property name="servers">
           <list>
               <value>${memcached.server}</value>
           </list>
       </property>
       <property name="initConn">
           <value>${memcached.initConn}</value>
       </property>
       <property name="minConn">
           <value>${memcached.minConn}</value>
       </property>
       <property name="maxConn">
           <value>${memcached.maxConn}</value>
       </property>
       <property name="maintSleep">
           <value>${memcached.maintSleep}</value>
       </property>
       <property name="nagle">
           <value>${memcached.nagle}</value>
       </property>
       <property name="socketTO">
           <value>${memcached.socketTO}</value>
       </property>
   </bean>
   <bean id="memCachedClient" class="com.danga.MemCached.MemCachedClient">
       <constructor-arg>
           <value>memCachedPool</value>
       </constructor-arg>
   </bean>
</beans>

4.然后添加一个service方法和实现方法

5.最后在controller里添加上memcache

明日计划:

解决页面在输入密码登录,解密报错bug

压测服务器



收获:

memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

安装完成后进入usr/local/bin启动memcache 

memcached -d -p 11211 -u nobody -c 1024 -m 64

上面的命令意思是:

-d选项是启动一个守护者进程,-p是设置端口,

-u是运行Memcache的用户,-c是最大运行的并发连接数,-m是分配给Memcache使用的内存数量,单位是MB

启动完后使用telnet连接到memcached端口,输入命令:telnet localhost 11211,显示Connected to localhost 说明连接成功

memcached基本命令

set

命令用于向缓存添加新的键值对,如果键已经存在,则之前的值将被替换

add

命令仅当缓冲中不存在键时,add命令才会向缓存中添加一个键值对,如果缓存中已经存在键,则之前的值将仍然保持相同

replace

仅当键已经存在时,replace命令才会替换缓存中的键

get

命令用于检索与之前添加的键值对相关的值

delete

命令用于删除memecached中的任何现有值


memcached高级命令

gets

功能类似于基本的get命令,gets返回的信息多了一个整型  值名称/值对

却别:

get userId

VALUE userId 0 5

12345

END


gets userId

VALUE userId 0 5 4

12345

END


cas

功能类似于set命令,但包括一个额外的值,用于设置名称/值对的值


区别:

set userId 0 0 5

55555

STORED


gets userId

VALUE userId 0 5 6

55555

END


cas userId 0 0 5 6

33333

STORED



问题:

1.运行报错

16-Jun-2017 19:36:36.459 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]

 org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'memcachedPool' defined in class path resource [conf/spring-memcached.xml]: Could not resolve placeholder 'memcached.server' in string value "${memcached.server}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'memcached.server' in string value "${memcached.server}"

原因是memcache配置文件,手快多打了一个字母。。。

2.tomcat启动报错

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tilesConfigurer': Failed to introspect bean class [org.springframework.web.servlet.view.tiles3.TilesConfigurer] for lookup method metadata: could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: org/apache/tiles/startup/TilesInitializer

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors

原因是缺少tiles-servlet.jar包

3.解密错误

2017-06-17 01:22:18,832 [http-nio-8080-exec-4] DEBUG [org.springframework.web.servlet.DispatcherServlet] - Could not complete request

javax.crypto.IllegalBlockSizeException: Input length not multiple of 8 bytes

启动tomcat输入密码点击登录报错,百度说是DES加密的长度必须是8的倍数




返回列表 返回列表
评论

    分享到