发表于: 2017-10-30 23:17:52

1 747


今天完成的任务:

1.首先了解memcached是什么。

memcached是一个对象缓存系统,用在动态的web应用来减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。是内存中的一个键值对,用于数据库调用。通过缓存数据库查询结果来减少数据库的访问次数。

安装一下memcached,一定要记得使用管理员权限,不然会出现

failed to install service or service already installed"的错误

正常的话就这样。

中间没提示,然后启动之后可以去服务里面看,已经开启了。

然后开启telnet去连接一下memcached

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。Telnet是常用的远程控制Web服务器的方法。

首先需要打开telnet的服务

https://jingyan.baidu.com/article/b24f6c82e7b1f886bfe5da8a.html

开启之后就可以使用telnet +ip +端口 去查看和使用。

 

2.学习使用memcached

整理一下memcached的逻辑,就是如果需要请求数据库的内容,就先去缓存空间中查找,如果有就直接返回了,如果没有就需要从数据库中查找,找到了存在缓存中,并且返回结果。如果数据库和缓存都没有就是找不到。

那就是需要在Service实现中加入一些东西,在查找的实现类里面添加首先去缓存查,找不到再去数据库查,查到了返回并且添加到缓存中。

add()添加一个key-value

set()修改

get()查找。

测试一下能不能添加和获取。

但是这样只可以是放进去一个一个的普通对象类型,但是我们是需要对自己的model中的类进行访问的。就需要用到model的序列化,这里面的原理暂时先放下。。。参考

http://blog.csdn.net/tengdazhang770960436/article/details/53436334

然后上面是使用工具类来实现添加获取缓存。现在把memcached放到Spring里面。

这是在Spring中的配置文件

<bean id="memcachedPool" class="com.danga.MemCached.SockIOPool"
     
factory-method="getInstance" init-method="initialize">
        <constructor-arg>
                <value>
neeaMemcachedPool</value>
        </constructor-arg>
        <property
name="servers">
                <list><value>
127.0.0.1:11211</value></list>
        </property>
        <property
name="initConn">
                <value>
20</value>
        </property>
        <property
name="minConn">
                <value>
10</value>
        </property>
        <property
name="maxConn">
                <value>
50</value>
        </property>
        <property
name="nagle">
                <value>
false</value>
        </property>
        <property
name="socketTO">
                <value>
3000</value>
        </property>
</bean>
<bean
id="memcachedClient" class="com.danga.MemCached.MemCachedClient">
        <constructor-arg>
                <value>
neeaMemcachedPool</value>
        </constructor-arg>
</bean>

然后测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:Mybatis.xml"})
public class demo {
   
@Autowired
   
MemCachedClient memCachedClient;
   
@Test
   
public void test1(){
        User user=
new User();
       
user.setId(188888);
       
user.setName("chen");
       
memCachedClient.add("us",user);
       
User user1=(User) memCachedClient.get("name");
       
System.out.println(user1.getId()+"   "+user1.getName());
   
}
}

参考:http://blog.csdn.net/sup_heaven/article/details/32337711

到现在是可以了,就直接往项目里面添加就可以了。


3.压测试一下。

只有memcached的时候,没有使用nginx,话说要达到200ms好难。。。啊

100并发100次请求

上面的会不会因为的的并发次数太多了?降低到50次并发。

好像快了一点1s左右

 

20次并发,400ms

 

10次好像差不多了。。。

 

5 200ms了但是五次的并发也太少了吧???

明天计划:

明天继续测试啊。并且在服务器上配置然后使用nginx负载均衡。

 

遇到问题:

刚刚开始不能打开telnet,然后服务里面也没有这一项,应用也添加了telnet,很奇怪,最后突然发现是因为我输入的端口号不对。。我把pid当做端口了。。敲里lailai

 

第二个是添加memcached到项目里运行的时候报错

这是因为依赖有冲突,可以在pom中右键----diagrams-----show dependencies  红色的是有冲突的,可以右键exclude去掉。

 

第三个是找不到依赖里面的类,不能注入。

最后解决办法是先将memcached的依赖添加到maven仓库中,然后再去引用。之前偷懒想直接用jart包。

收获:

学会了memcached,可以使用工具类来实现,也可以在Spring中配置,然后注入。

 

禅道:

http://taskNaNteng.com/zentao/task-view-10340.html




返回列表 返回列表
评论

    分享到