最近初学了一下Memcached,网上有很多的前辈文章详细介绍过Memcached 的安装使用啊,我写着个的目的不是介绍Memcached,只是想把自己初次体验的过程记下来,以备那天真的需要了可以来此复习一下。
1.下载Memcached 地址:http://code.google.com/p/memcached/downloads/list
以及libevent地址:http://www.monkey.org/~provos/libevent/
2.安装(我用的linux)
1)先安装libevent。需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;
2)再安装memcached,需要指定libevent的安装路径即./configure –with-libevent=/usr;然后make;然后make install;
3)测试安装是否成功:ls -al /usr/local/bin/mem*
4)启动memcahced:/usr/local/bin/memcached -d -m 10 -u root -l 192.168.1.158 -p 12111 -c 256 -P /tmp/memcached.pid
3.下载Memcached的java客户端,客户端很多中,各种的差异网上有很多,我试了其中的三种:
1.gwhalin-Memcached-Java-Client
下载地址:https://github.com/gwhalin/Memcached-Java-Client
2.是有前辈在gwhatlin上改进的一个java客户端
地址:http://code.google.com/p/memcache-client-forjava/
使用这个的时候的在可以在classlpath下用以个xml文件配置客户端信息。
memcached.xml:
<?xml version="1.0" encoding="UTF-8"?>
<memcached>
<client name="mclient0" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool0">
<errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler>
</client>
<socketpool name="pool0" failover="true" initConn="5" minConn="5" maxConn="250" maintSleep="0"
nagle="false" socketTO="3000" aliveCheck="true">
<servers>192.168.1.158:12111</servers>
</socketpool>
</memcached>
3.是xmemcached
地址:http://code.google.com/p/xmemcached/downloads/list
4.便写测试代码:
package com.strong;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;
import org.junit.AfterClass;
import static org.junit.Assert.*;
import org.junit.BeforeClass;
import org.junit.Test;
import com.alisoft.xplatform.asf.cache.ICacheManager;
import com.alisoft.xplatform.asf.cache.IMemcachedCache;
import com.alisoft.xplatform.asf.cache.memcached.CacheUtil;
import com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemcacheTest{
static ICacheManager<IMemcachedCache> manager;
static SockIOPool pool ;
static MemcachedClient cache;
@BeforeClass
public static void setUpBeforeClass() throws Exception
{
manager = CacheUtil.getCacheManager(IMemcachedCache.class, MemcachedCacheManager.class.getName());
manager.setConfigFile("memcached.xml");
manager.setResponseStatInterval(5*1000);
manager.start();
pool = SockIOPool.getInstance();
String[] server = { "192.168.1.158:12111" };
pool.setServers(server);
pool.setFailover(true);
pool.setInitConn(10);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaintSleep(30);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(true);
pool.initialize();
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.1.158:12111"));
cache = builder.build();
}
/**
* @throws java.lang.Exception
*/
@AfterClass
public static void tearDownAfterClass() throws Exception
{
pool.shutDown();
manager.stop();
cache.shutdown();
}
@Test
public void testXmemcached(){
try {
cache.set("key1", 0, "232323");
assertEquals("232323", cache.get("key1"));
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
}
@Test
public void testQwhatLinMemcached(){
MemCachedClient memCachedClient = new MemCachedClient();
for(int i=0;i<10;i++){
memCachedClient.set("test"+i, i+"testing");
}
for(int i=0;i<10;i++){
String result = (String) memCachedClient.get("test"+i);
assertEquals(i+"testing", result);
}
}
@Test
public void testWenChuMemcached(){
IMemcachedCache cache = manager.getCache("mclient0");
cache.remove("key1");
cache.remove("key2");
cache.remove("key3");
cache.put("key1", "1");
cache.put("key2", "222");//替换在添加
cache.replace("key1", "333");
cache.add("key3", "444");//只做添加
cache.put("key2", "555");
assertEquals("333", cache.get("key1"));
assertEquals("555", cache.get("key2"));
assertEquals("444", cache.get("key3"));
}
}
5.与spring的集成。网上有介绍和spring集成的实例,xmemcache在用户手册中专门介绍了与spring集成。详细的可以看它的官网:http://code.google.com/p/xmemcached/wiki/User_Guide_zh
分享到:
相关推荐
结合以上知识,我们可以看到`memcached`和`js版本控制`都是为了提升系统性能和用户体验。在实际项目中,我们需要根据具体需求灵活运用这些技巧,同时不断学习和探索新的解决方案,以适应不断变化的技术环境。
这个系统可能采用了预处理语句防止SQL注入,使用了session和cookie来处理用户登录状态,并通过缓存技术如Memcached或Redis提高页面加载速度。此外,考虑到网站的响应式设计,系统可能采用了Bootstrap或其他前端框架...
**phpFastCache详解** ...这款开源库在Web开发领域广泛应用,尤其在处理高并发、大数据量的场景下,能显著提升应用响应...结合合适的缓存策略和驱动选择,开发者可以充分利用phpFastCache来优化应用性能,提升用户体验。
新的内核也可能整合了缓存策略,如Redis或Memcached,以提升数据读取速度,降低数据库压力。 主要推的分类信息模块是系统的核心部分,它可能提供了用户友好的界面来发布、查看和管理各种分类信息。用户可以方便地...
"短说社区论坛系统 v2.3.1.zip" 是一个专门为构建在线社区和论坛而设计的应用程序。这个版本号2.3.1表明这是一个...无论是对于初次接触论坛建设的新手,还是有经验的管理员,它都能提供丰富的功能和良好的用户体验。
3. **懒加载**:对于非首屏内容,可以使用懒加载技术,只在用户滚动到相应位置时才加载,减轻初次加载的压力。 4. **代码压缩与合并**:通过压缩CSS、JS代码,减少文件大小;合并多个CSS或JS文件为一个,降低HTTP...
- **缓存**:对于不经常变化的数据,可以考虑使用缓存技术(如Redis或Memcached)存储部分或全部分页结果,减少数据库查询次数。 - **懒加载**:只在用户滚动到底部时加载更多数据,这被称为无限滚动,可以减少...
在.NET环境中,我们可以利用内存缓存(如HttpRuntime.Cache)或分布式缓存(如Redis、Memcached)来存储图片数据。 在这个实例中,我们关注的是图片的服务器端缓存。当用户请求一张图片时,系统会检查该图片是否...
这个版本,v3124,可能是该论坛平台的一个重大更新,旨在提供更加流畅和快速的用户体验。在设计论坛数据库时,开发者们深入思考了每个细节,以确保在不影响主要功能的前提下,降低数据库查询次数,减少资源消耗,...
3. 提高用户体验:快速响应的数据库查询意味着用户等待时间减少,提升用户体验。 二、SQL性能测试方法 1. 执行计划分析:大多数数据库管理系统(如MySQL、PostgreSQL、SQL Server等)都提供了执行计划工具,显示...
9. **性能优化**:包括缓存机制(如Memcached或Redis)、数据库索引优化、CDN内容分发网络、页面静态化等,以提高系统响应速度和用户体验。 10. **安全防护**:除了基础的输入验证外,还需要防火墙、SSL加密、CSRF...
- 使用缓存:对于静态分页,可以考虑使用数据库缓存如Memcached或Redis。 - 优化SQL查询:避免全表扫描,使用索引提高查询速度。 - 异步加载:在用户滚动到底部时才加载下一页,减少初次加载的数据量。 通过以上...
这种方法虽然初次查询数据量较大,但后续操作更高效。 在ThinkPHP框架中,可以使用模型和关联关系来简化无限级分类的实现。例如,定义一个Comment模型,其中包含对父评论的外键引用,并设置相应的关联规则: ```...
同时,为了优化性能,系统可能采用了缓存技术,如Redis或Memcached,来存储频繁访问的数据,减少对数据库的直接查询。 安全性方面,"飞飞PHP影视系统"可能会包含防止SQL注入、XSS攻击的措施,以及对上传文件的验证...
12. **性能优化**:可能包含缓存策略(如Redis或Memcached)、CDN(内容分发网络)支持和负载均衡,以提升网站性能和可用性。 13. **测试与调试**:源码应包含单元测试、集成测试,便于开发者进行功能验证和问题...
- **缓存**:对于频繁访问的树形结构,可考虑使用缓存技术(如Redis或Memcached)存储预处理的树形结构,减少数据库查询次数。 - **懒加载**:只在需要时加载子菜单,减少初次加载时的数据量。 - **索引优化**:...
5. 移动适配:系统具备良好的响应式设计,能自动适应不同设备的屏幕尺寸,提供一致的浏览体验。 二、架构设计 1. MVC模式:YCCMS采用经典的Model-View-Controller架构,将业务逻辑、数据处理和界面展示分离,提高...
在压缩包文件名称列表中,"docs"可能包含的是phpwind的官方文档、安装指南、用户手册等资源,这些文档对于初次接触phpwind的用户来说极其重要,他们可以通过阅读文档来了解如何配置、管理以及优化论坛系统。...
"Moodle 一体包安装手册(Windows)" 提供了在 Windows 操作系统上安装和配置 Moodle 的详细步骤,这对于初次接触 Moodle 或需要快速搭建本地开发环境的教育工作者和 IT 人员来说非常有用。 首先,安装 Moodle 需要...
3. **缓存支持**:Yii提供了多种缓存策略,包括数据缓存、页面缓存、片段缓存等,支持Memcached、APC、Redis等缓存系统,优化了应用性能。 4. **安全防护**:Yii框架内置了多种安全防护机制,如防止SQL注入、XSS...