发表于: 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
评论