- 浏览: 77615 次
- 性别:
- 来自: 上海
文章分类
最新评论
memcached基本配置与使用
一、概念
Memcached是danga.com开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。
二、原理
Memcached有两个核心组件组成:服务端(ms)和客户端(mc)。首先mc拿到ms列表,并对key做hash转化,根据hash值确定kv对所存的ms位置。然后在一个memcached的查询中,mc先通过计算key的hash值来确定kv对所处在的ms位置。当ms确定后,客户端就会发送一个查询请求给对应的ms,让它来查找确切的数据。因为ms之间并没有护卫备份,也就不需要互相通信,所以效率较高。
三、适用场合
1.分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。
2.数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可以使用Hibernate的缓存机制。但memcached是基于分布式的,并可独立于网站应用本身,所以更适合大型网站进行应用的拆分。
3.服务器间数据共享。举例来讲,我们将网站的登录系统、查询系统拆分为两个应用,放在不同的服务器上,并进行集群,那这个时候用户登录后,登录信息如何从登录系统服务器同步到查询系统服务器呢?这时候,我们便可以使用memcached,登录系统将登录信息缓存起来,查询系统便可以获得登录信息,就像获取本地信息一样。
四、客户端版本
Memcached Client目前有一下四种:
Memcached Client forJava,比 SpyMemcached更稳定、更早、更广泛;
SpyMemcached,比 Memcached Client for Java更高效;
XMemcached,比 SpyMemcache并发效果更好。
alisoft-xplatform-asf-cache阿里软件的架构师岑文初进行封装的。里面的注释都是中文的,比较好
五、服务器端
安装
这里介绍windows环境的安装。
1.下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2.在cmd下输入 'c:\memcached\memcached.exe -d install' 安装
3.再输入: 'c:\memcached\memcached.exe -d start' 启动。
以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
内存分配
默认情况下,ms是用一个内置的叫“块分配器”的组件来分配内存的。舍弃c++标准的malloc/free的内存分配,而采用块分配器的主要目的 是为了避免内存碎片,否则操作系统要花费更多时间来查找这些逻辑上连续的内存块(实际上是断开的)。用了块分配器,ms会轮流的对内存进行大块的分配,并 不断重用。当然由于块的大小各不相同,当数据大小和块大小不太相符的情况下,还是有可能导致内存的浪费。
同时,ms对key和data都有相应的限制,key的长度不能超过250字节,data也不能超过块大小的限制 --- 1MB。
因为 mc所使用的hash算法,并不会考虑到每个ms的内存大小。理论上mc会分配概率上等量的kv对给每个ms,这样如果每个ms的内存都不太一样,那可能
会导致内存使用率的降低。所以一种替代的解决方案是,根据每个ms的内存大小,找出他们的最大公约数,然后在每个ms上开n个容量=最大公约数的 instance,这样就等于拥有了多个容量大小一样的子ms,从而提供整体的内存使用率。
缓存策略
当ms的hash表满了之后,新的插入数据会替代老的数据,更新的策略是LRU(最近最少使用),以及每个kv对的有效时限。Kv对存储有效时限是在mc端由app设置并作为参数传给ms的。
同时ms采用是偷懒替代法,ms不会开额外的进程来实时监测过时的kv对并删除,而是当且仅当,新来一个插入的数据,而此时又没有多余的空间放了,才会进行清除动作。
六、范例
1.加载commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar
2.创建memcached工具类:
- publicclassMemcachedUtil{
- /**
- *memcached客户端单例
- */
- privatestaticMemCachedClientcachedClient=newMemCachedClient();
- /**
- *初始化连接池
- */
- static{
- //获取连接池的实例
- SockIOPoolpool=SockIOPool.getInstance();
- //服务器列表及其权重
- String[]servers={"127.0.0.1:11211"};
- Integer[]weights={3};
- //设置服务器信息
- pool.setServers(servers);
- pool.setWeights(weights);
- //设置初始连接数、最小连接数、最大连接数、最大处理时间
- pool.setInitConn(10);
- pool.setMinConn(10);
- pool.setMaxConn(1000);
- pool.setMaxIdle(1000*60*60);
- //设置连接池守护线程的睡眠时间
- pool.setMaintSleep(60);
- //设置TCP参数,连接超时
- pool.setNagle(false);
- pool.setSocketTO(60);
- pool.setSocketConnectTO(0);
- //初始化并启动连接池
- pool.initialize();
- //压缩设置,超过指定大小的都压缩
- //cachedClient.setCompressEnable(true);
- //cachedClient.setCompressThreshold(1024*1024);
- }
- privateMemcachedUtil(){
- }
- publicstaticbooleanadd(Stringkey,Objectvalue){
- returncachedClient.add(key,value);
- }
- publicstaticbooleanadd(Stringkey,Objectvalue,Integerexpire){
- returncachedClient.add(key,value,expire);
- }
- publicstaticbooleanput(Stringkey,Objectvalue){
- returncachedClient.set(key,value);
- }
- publicstaticbooleanput(Stringkey,Objectvalue,Integerexpire){
- returncachedClient.set(key,value,expire);
- }
- publicstaticbooleanreplace(Stringkey,Objectvalue){
- returncachedClient.replace(key,value);
- }
- publicstaticbooleanreplace(Stringkey,Objectvalue,Integerexpire){
- returncachedClient.replace(key,value,expire);
- }
- publicstaticObjectget(Stringkey){
- returncachedClient.get(key);
- }
- }
- publicclassUserBeanimplementsSerializable{
- privatestaticfinallongserialVersionUID=9174194101246733501L;
- privateStringusername;
- privateStringpassword;
- publicUserBean(Stringusername,Stringpassword){
- this.username=username;
- this.password=password;
- }
- publicStringgetUsername(){
- returnusername;
- }
- publicvoidsetUsername(Stringusername){
- this.username=username;
- }
- publicStringgetPassword(){
- returnpassword;
- }
- publicvoidsetPassword(Stringpassword){
- this.password=password;
- }
- @Override
- publicinthashCode(){
- finalintprime=31;
- intresult=1;
- result=prime*result
- +((password==null)?0:password.hashCode());
- result=prime*result
- +((username==null)?0:username.hashCode());
- returnresult;
- }
- @Override
- publicbooleanequals(Objectobj){
- if(this==obj)
- returntrue;
- if(obj==null)
- returnfalse;
- if(getClass()!=obj.getClass())
- returnfalse;
- UserBeanother=(UserBean)obj;
- if(password==null){
- if(other.password!=null)
- returnfalse;
- }elseif(!password.equals(other.password))
- returnfalse;
- if(username==null){
- if(other.username!=null)
- returnfalse;
- }elseif(!username.equals(other.username))
- returnfalse;
- returntrue;
- }
- @Override
- publicStringtoString(){
- return"username:"+username+",password:"+password;
- }
- }
- publicclassMemcachedUtilTest{
- @Test
- publicvoidtestMemcached(){
- MemcachedUtil.put("hello","world",60);
- Stringhello=(String)MemcachedUtil.get("hello");
- Assert.assertEquals("world",hello);
- for(inti=0;i<10000000;++i){
- UserBeanuserBean=newUserBean("Jason"+i,"123456-"+i);
- MemcachedUtil.put("user"+i,userBean,60);
- Objectobj=MemcachedUtil.get("user"+i);
- Assert.assertEquals(userBean,obj);
- }
- }
- }
5.通过spring注入memcached:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="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">
- <beanid="memcachedPool"class="com.danga.MemCached.SockIOPool"
- factory-method="getInstance"init-method="initialize">
- <constructor-arg>
- <value>neeaMemcachedPool</value>
- </constructor-arg>
- <propertyname="servers">
- <list>
- <value>127.0.0.1:11211</value>
- </list>
- </property>
- <propertyname="initConn">
- <value>20</value>
- </property>
- <propertyname="minConn">
- <value>10</value>
- </property>
- <propertyname="maxConn">
- <value>50</value>
- </property>
- <propertyname="nagle">
- <value>false</value>
- </property>
- <propertyname="socketTO">
- <value>3000</value>
- </property>
- </bean>
- <beanid="memcachedClient"class="com.danga.MemCached.MemCachedClient">
- <constructor-arg>
- <value>neeaMemcachedPool</value>
- </constructor-arg>
- </bean>
- </beans>
6.创建测试用例:
- publicclassMemcachedSpringTest{
- privateMemCachedClientcachedClient;
- @Before
- publicvoidinit(){
- ApplicationContextcontext=newClassPathXmlApplicationContext("com/luo/config/beans.xml");
- cachedClient=(MemCachedClient)context.getBean("memcachedClient");
- }
- @Test
- publicvoidtestMemcachedSpring(){
- UserBeanuser=newUserBean("luo","hi");
- cachedClient.set("user",user);
- UserBeancachedBean=(UserBean)user;
- Assert.assertEquals(user,cachedBean);
- }
- }
七、注意点
第一、memcached是在服务器端的内存中缓存对象的,不是缓存或硬盘;
第二、memcached的pool可以关联多个server,
String[] servers = {"10.20.185.12:11001","10.20.185.25:11001"};
Integer[] weights = {3,7};
该配置表示30%的缓存在放在第一台服务器,70%的将放在第二台服务器,这样便可以充分利用不同服务器的内存了;
第三、我最困惑的是client是如何得到相应的pool的,后然看了点源码才知道是这样的。client是通过pool的name关联到某个pool的,上面的例子中在SockIOPoolpool=SockIOPool.getInstance(); 和MemCachedClientclient=newMemCachedClient();虽然都没写poolName,但就是新建了一个”default“的pool,然后client关联到了这个”default“的pool。当然我们在新建这两个对象时可以给定具体的poolName。
下一篇:memcached真实项目中的应用http://blog.csdn.net/sup_heaven/article/details/32728477
参考文章:
http://snowolf.iteye.com/blog/1471805
http://my249645546.iteye.com/blog/1420061
http://blog.csdn.NET/loujinhe/article/details/8491673?reload
http://hzp.iteye.com/blog/1872664
一、概念
Memcached是danga.com开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。
二、原理
Memcached有两个核心组件组成:服务端(ms)和客户端(mc)。首先mc拿到ms列表,并对key做hash转化,根据hash值确定kv对所存的ms位置。然后在一个memcached的查询中,mc先通过计算key的hash值来确定kv对所处在的ms位置。当ms确定后,客户端就会发送一个查询请求给对应的ms,让它来查找确切的数据。因为ms之间并没有护卫备份,也就不需要互相通信,所以效率较高。
三、适用场合
1.分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。
2.数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可以使用Hibernate的缓存机制。但memcached是基于分布式的,并可独立于网站应用本身,所以更适合大型网站进行应用的拆分。
3.服务器间数据共享。举例来讲,我们将网站的登录系统、查询系统拆分为两个应用,放在不同的服务器上,并进行集群,那这个时候用户登录后,登录信息如何从登录系统服务器同步到查询系统服务器呢?这时候,我们便可以使用memcached,登录系统将登录信息缓存起来,查询系统便可以获得登录信息,就像获取本地信息一样。
四、客户端版本
Memcached Client目前有一下四种:
Memcached Client forJava,比 SpyMemcached更稳定、更早、更广泛;
SpyMemcached,比 Memcached Client for Java更高效;
XMemcached,比 SpyMemcache并发效果更好。
alisoft-xplatform-asf-cache阿里软件的架构师岑文初进行封装的。里面的注释都是中文的,比较好
五、服务器端
安装
这里介绍windows环境的安装。
1.下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached
2.在cmd下输入 'c:\memcached\memcached.exe -d install' 安装
3.再输入: 'c:\memcached\memcached.exe -d start' 启动。
以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
内存分配
默认情况下,ms是用一个内置的叫“块分配器”的组件来分配内存的。舍弃c++标准的malloc/free的内存分配,而采用块分配器的主要目的 是为了避免内存碎片,否则操作系统要花费更多时间来查找这些逻辑上连续的内存块(实际上是断开的)。用了块分配器,ms会轮流的对内存进行大块的分配,并 不断重用。当然由于块的大小各不相同,当数据大小和块大小不太相符的情况下,还是有可能导致内存的浪费。
同时,ms对key和data都有相应的限制,key的长度不能超过250字节,data也不能超过块大小的限制 --- 1MB。
因为 mc所使用的hash算法,并不会考虑到每个ms的内存大小。理论上mc会分配概率上等量的kv对给每个ms,这样如果每个ms的内存都不太一样,那可能
会导致内存使用率的降低。所以一种替代的解决方案是,根据每个ms的内存大小,找出他们的最大公约数,然后在每个ms上开n个容量=最大公约数的 instance,这样就等于拥有了多个容量大小一样的子ms,从而提供整体的内存使用率。
缓存策略
当ms的hash表满了之后,新的插入数据会替代老的数据,更新的策略是LRU(最近最少使用),以及每个kv对的有效时限。Kv对存储有效时限是在mc端由app设置并作为参数传给ms的。
同时ms采用是偷懒替代法,ms不会开额外的进程来实时监测过时的kv对并删除,而是当且仅当,新来一个插入的数据,而此时又没有多余的空间放了,才会进行清除动作。
六、范例
1.加载commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar
2.创建memcached工具类:
- publicclassMemcachedUtil{
- /**
- *memcached客户端单例
- */
- privatestaticMemCachedClientcachedClient=newMemCachedClient();
- /**
- *初始化连接池
- */
- static{
- //获取连接池的实例
- SockIOPoolpool=SockIOPool.getInstance();
- //服务器列表及其权重
- String[]servers={"127.0.0.1:11211"};
- Integer[]weights={3};
- //设置服务器信息
- pool.setServers(servers);
- pool.setWeights(weights);
- //设置初始连接数、最小连接数、最大连接数、最大处理时间
- pool.setInitConn(10);
- pool.setMinConn(10);
- pool.setMaxConn(1000);
- pool.setMaxIdle(1000*60*60);
- //设置连接池守护线程的睡眠时间
- pool.setMaintSleep(60);
- //设置TCP参数,连接超时
- pool.setNagle(false);
- pool.setSocketTO(60);
- pool.setSocketConnectTO(0);
- //初始化并启动连接池
- pool.initialize();
- //压缩设置,超过指定大小的都压缩
- //cachedClient.setCompressEnable(true);
- //cachedClient.setCompressThreshold(1024*1024);
- }
- privateMemcachedUtil(){
- }
- publicstaticbooleanadd(Stringkey,Objectvalue){
- returncachedClient.add(key,value);
- }
- publicstaticbooleanadd(Stringkey,Objectvalue,Integerexpire){
- returncachedClient.add(key,value,expire);
- }
- publicstaticbooleanput(Stringkey,Objectvalue){
- returncachedClient.set(key,value);
- }
- publicstaticbooleanput(Stringkey,Objectvalue,Integerexpire){
- returncachedClient.set(key,value,expire);
- }
- publicstaticbooleanreplace(Stringkey,Objectvalue){
- returncachedClient.replace(key,value);
- }
- publicstaticbooleanreplace(Stringkey,Objectvalue,Integerexpire){
- returncachedClient.replace(key,value,expire);
- }
- publicstaticObjectget(Stringkey){
- returncachedClient.get(key);
- }
- }
- publicclassUserBeanimplementsSerializable{
- privatestaticfinallongserialVersionUID=9174194101246733501L;
- privateStringusername;
- privateStringpassword;
- publicUserBean(Stringusername,Stringpassword){
- this.username=username;
- this.password=password;
- }
- publicStringgetUsername(){
- returnusername;
- }
- publicvoidsetUsername(Stringusername){
- this.username=username;
- }
- publicStringgetPassword(){
- returnpassword;
- }
- publicvoidsetPassword(Stringpassword){
- this.password=password;
- }
- @Override
- publicinthashCode(){
- finalintprime=31;
- intresult=1;
- result=prime*result
- +((password==null)?0:password.hashCode());
- result=prime*result
- +((username==null)?0:username.hashCode());
- returnresult;
- }
- @Override
- publicbooleanequals(Objectobj){
- if(this==obj)
- returntrue;
- if(obj==null)
- returnfalse;
- if(getClass()!=obj.getClass())
- returnfalse;
- UserBeanother=(UserBean)obj;
- if(password==null){
- if(other.password!=null)
- returnfalse;
- }elseif(!password.equals(other.password))
- returnfalse;
- if(username==null){
- if(other.username!=null)
- returnfalse;
- }elseif(!username.equals(other.username))
- returnfalse;
- returntrue;
- }
- @Override
- publicStringtoString(){
- return"username:"+username+",password:"+password;
- }
- }
- publicclassMemcachedUtilTest{
- @Test
- publicvoidtestMemcached(){
- MemcachedUtil.put("hello","world",60);
- Stringhello=(String)MemcachedUtil.get("hello");
- Assert.assertEquals("world",hello);
- for(inti=0;i<10000000;++i){
- UserBeanuserBean=newUserBean("Jason"+i,"123456-"+i);
- MemcachedUtil.put("user"+i,userBean,60);
- Objectobj=MemcachedUtil.get("user"+i);
- Assert.assertEquals(userBean,obj);
- }
- }
- }
5.通过spring注入memcached:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="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">
- <beanid="memcachedPool"class="com.danga.MemCached.SockIOPool"
- factory-method="getInstance"init-method="initialize">
- <constructor-arg>
- <value>neeaMemcachedPool</value>
- </constructor-arg>
- <propertyname="servers">
- <list>
- <value>127.0.0.1:11211</value>
- </list>
- </property>
- <propertyname="initConn">
- <value>20</value>
- </property>
- <propertyname="minConn">
- <value>10</value>
- </property>
- <propertyname="maxConn">
- <value>50</value>
- </property>
- <propertyname="nagle">
- <value>false</value>
- </property>
- <propertyname="socketTO">
- <value>3000</value>
- </property>
- </bean>
- <beanid="memcachedClient"class="com.danga.MemCached.MemCachedClient">
- <constructor-arg>
- <value>neeaMemcachedPool</value>
- </constructor-arg>
- </bean>
- </beans>
6.创建测试用例:
- publicclassMemcachedSpringTest{
- privateMemCachedClientcachedClient;
- @Before
- publicvoidinit(){
- ApplicationContextcontext=newClassPathXmlApplicationContext("com/luo/config/beans.xml");
- cachedClient=(MemCachedClient)context.getBean("memcachedClient");
- }
- @Test
- publicvoidtestMemcachedSpring(){
- UserBeanuser=newUserBean("luo","hi");
- cachedClient.set("user",user);
- UserBeancachedBean=(UserBean)user;
- Assert.assertEquals(user,cachedBean);
- }
- }
七、注意点
第一、memcached是在服务器端的内存中缓存对象的,不是缓存或硬盘;
第二、memcached的pool可以关联多个server,
String[] servers = {"10.20.185.12:11001","10.20.185.25:11001"};
Integer[] weights = {3,7};
该配置表示30%的缓存在放在第一台服务器,70%的将放在第二台服务器,这样便可以充分利用不同服务器的内存了;
第三、我最困惑的是client是如何得到相应的pool的,后然看了点源码才知道是这样的。client是通过pool的name关联到某个pool的,上面的例子中在SockIOPoolpool=SockIOPool.getInstance(); 和MemCachedClientclient=newMemCachedClient();虽然都没写poolName,但就是新建了一个”default“的pool,然后client关联到了这个”default“的pool。当然我们在新建这两个对象时可以给定具体的poolName。
下一篇:memcached真实项目中的应用http://blog.csdn.net/sup_heaven/article/details/32728477
参考文章:
http://snowolf.iteye.com/blog/1471805
http://my249645546.iteye.com/blog/1420061
http://blog.csdn.NET/loujinhe/article/details/8491673?reload
http://hzp.iteye.com/blog/1872664
相关推荐
#### 三、Memcached基本操作命令 1. **连接Memcached服务** 在Windows下,可以通过Telnet工具测试连接Memcached服务: ```bash telnet ip port ``` 成功连接后,可以执行以下基本命令进行数据操作: - `set ...
Memcached是一款高性能的分布式...以上就是Memcached在Java应用中的基本配置和使用流程。在实际应用中,你可能还需要处理异常、监控缓存性能、设置过期时间等更复杂的操作。记得根据你的具体需求进行相应的调整和优化。
3. **启动与停止**:使用命令行工具如`memcached`或`service memcached start/stop/restart`来启动、停止或重启服务。 **三、Memcached客户端** 1. **语言支持**:Memcached有多种编程语言的客户端库,如PHP、...
**Memcached基本使用** Memcached是一款高性能、分布式内存对象缓存系统,用于减轻数据库负载,提升Web应用性能。它的工作原理是将数据存储在内存中,以便快速访问,避免频繁读取硬盘上的数据库。在本篇文章中,...
本文将详细介绍如何在 Ubuntu 操作系统下使用源代码安装并配置 Apache、Tomcat 和 Memcached,实现集群中的 Session 共享与负载均衡。由于采用的是源码安装方式,可能会遇到一些细节上的差异,但总体思路与步骤应...
对于开发者而言,了解这些基本配置选项和命令可以帮助更高效地管理和优化MemCached的性能。此外,还可以进一步探索MemCached的高级特性,例如使用客户端库、监控工具等,以满足不同场景的需求。
#### 一、Memcached的安装与基本配置 Memcached是一款高性能、分布式内存对象缓存系统,用于在动态应用中减少数据库负载,加速页面渲染,通过缓存数据库查询结果和其他可复用的数据,从而提高网站速度。在Windows...
本文将详细介绍如何在Windows环境下安装和配置Memcached,并探讨其基本操作和状态查询。 首先,安装Memcached的步骤如下: 1. 访问 http://code.jellycan.com/memcached/ 下载适用于Windows的最新版本(例如1.2.6...
- 配置了Memcached的基本选项。 - 读取了`memcache.yml`中的服务器列表。 - 创建了一个`MemCache`实例并与服务器建立连接。 - 设置了Rails应用使用Memcached作为会话存储。 ##### 2. 配置`memcache.yml`文件 创建`...
Java开发者可以使用各种库与Memcached进行交互,例如spymemcached。这个库提供了一个简单的API,允许Java应用程序轻松地存取数据到Memcached服务器。以下是一些关键操作: - 添加数据:`MemcachedClient.add(String ...
本文将指导您如何安装和配置 Memcached,并介绍 Memcached 的基本概念和参数。 一、安装 Memcached 1. 使用 yum 安装 Memcached:`yum install memcached` 2. 启动 Memcached 服务:`service memcached start` 3. ...
- **Memcached安装**:下载Memcached源码包,解压并进入Memcached目录,使用`./configure --with-libevent=/usr`配置,确保Memcached能够找到libevent的安装位置,然后`make`编译,`make install`完成安装。...
除了使用Telnet进行基本的监控外,还有一些更高级的方法来监控Memcached,如使用第三方监控工具或自定义脚本来实现更复杂的监控需求。 ##### 5.1 第三方监控工具 市面上有许多成熟的监控工具支持Memcached的监控,...
1. **Nginx基本配置结构** Nginx的配置文件通常位于`/etc/nginx/nginx.conf`,由多个`http`、`server`和`location`块组成。`http`块定义全局配置,`server`块定义服务器行为,`location`块则处理特定的URL请求。 2...
安装与配置Memcached 在Linux环境下,可以通过包管理器(如apt-get或yum)安装Memcached。安装完成后,需要启动服务,并可以通过命令行工具`memcached`进行配置,例如设置监听端口、最大内存等参数。 ### 3. 使用...
##### Memcached.ClientLibrary 库配置与使用 由于原文档未给出具体的安装与使用步骤,此处提供一个大致框架: 1. **下载并安装`Memcached.ClientLibrary`库**。 2. **在项目中引用相应的DLL文件**。 3. **初始化...
在Java中,我们可以借助各种客户端库来与Memcached进行交互。本篇文章将深入探讨如何在Java项目中集成并使用Memcached。 1. **安装Memcached服务器** 在开始Java开发之前,首先需要在本地或服务器上安装Memcached...
memcached的基本配置** 配置 `memcached` 主要涉及以下几个参数: - `-p`:指定监听的端口号,默认为11211。 - `-l`:设置监听的IP地址,默认为本机所有接口。 - `-m`:分配的最大内存,单位为MB,缺省为64MB。 - `...
**标题:“memcached配置”** **描述:** 这篇博客文章主要探讨了如何配置和使用memcached,一个高性能的分布式内存...理解其基本原理和配置选项,以及如何在代码中有效地使用它,是每个IT专业人员必备的技能之一。
**标题解析:** “memcached安装及java应用使用...总结,本文应该涵盖了从安装memcached到在Java应用中使用它的全面指南,包括相关配置、操作、最佳实践和优化技巧,旨在帮助开发者充分利用memcached来提升应用性能。