Memcached 服务搭建和集成使用的详细步骤示例
以下是 Memcached 服务搭建和集成使用的详细步骤示例:
一、搭建 Memcached 服务
-  
安装 Memcached
- Linux 系统 
- yum 安装:执行命令 
yum install -y memcached memcached-devel。 - 源码安装 
- 下载源码:
wget http://www.memcached.org/files/memcached-1.5.17.tar.gz。 - 解压:
tar zxf memcached-1.5.17.tar.gz。 - 进入目录:
cd memcached-1.5.17。 - 配置:
./configure --prefix=/usr/local/memcached。 - 编译安装:
make && make install。 
 - 下载源码:
 
 - yum 安装:执行命令 
 - Windows 系统 
- 下载安装包:memcached-win64。
 - 解压到指定目录,如 
D:\memcached。 
 
 - Linux 系统 
 -  
启动 Memcached
- Linux 系统 
- 启动命令:
/usr/local/memcached/bin/memcached -d -u root -m 64m -p 11211 -c 1024 -l 0.0.0.0。 - 参数说明: 
-d:以守护进程方式运行。-u root:指定运行用户。-m 64m:分配 64MB 内存。-p 11211:监听端口。-c 1024:最大并发连接数。-l 0.0.0.0:监听所有 IP 地址。
 - 设置为开机启动: 
- 复制启动脚本:
cp /usr/local/memcached/scripts/memcached.sysv /etc/init.d/memcached。 - 修改脚本:
sed -i 's/USER=nobody/USER=root/g' /etc/init.d/memcached。 - 设置权限:
chmod +x /etc/init.d/memcached。 - 添加开机启动:
chkconfig --level 345 memcached on。 
 - 复制启动脚本:
 
 - 启动命令:
 - Windows 系统 
- 以管理员身份打开命令行。
 - 安装服务:
D:\memcached\memcached.exe -d install。 - 启动服务:
net start memcached。 
 
 - Linux 系统 
 
二、集成 Memcached 到应用程序
- 添加依赖 
- Maven 项目 
- 在 
pom.xml中添加依赖: 
 - 在 
 
 - Maven 项目 
 
<dependency><groupId>net.spy</groupId><artifactId>spymemcached</artifactId><version>2.12.3</version>
</dependency>
 
- 配置 Memcached 连接 
- 在 
application.properties或application.yml中添加配置: 
 - 在 
 
# application.yml
spring:memcached:servers: 127.0.0.1:11211pool:maxTotal: 100maxIdle: 20minIdle: 10
 
- 创建配置类 
- 创建 
MemcachedConfig类: 
 - 创建 
 
@Configuration
public class MemcachedConfig {@Value("${spring.memcached.servers}")private String servers;@Beanpublic MemcachedClient memcachedClient() throws IOException {MemcachedClient client = new MemcachedClient(AddrUtil.getAddresses(servers.split(",")));return client;}
}
 
- 使用 Memcached 缓存数据 
- 创建服务类 
CacheService: 
 - 创建服务类 
 
@Service
public class CacheService {@Autowiredprivate MemcachedClient memcachedClient;public void setToCache(String key, Object value, int expire) {try {memcachedClient.set(key, expire, value);} catch (Exception e) {e.printStackTrace();}}public Object getFromCache(String key) {try {return memcachedClient.get(key);} catch (Exception e) {e.printStackTrace();return null;}}
}
 
- 在业务逻辑中使用缓存 
- 在控制器或服务层中注入 
CacheService并使用: 
 - 在控制器或服务层中注入 
 
@RestController
public class UserController {@Autowiredprivate CacheService cacheService;@GetMapping("/user/{id}")public User getUser(@PathVariable Long id) {String key = "user_" + id;User user = (User) cacheService.getFromCache(key);if (user == null) {user = userRepository.findById(id).orElse(null);if (user != null) {cacheService.setToCache(key, user, 3600); // 缓存一小时}}return user;}
}
 
三、测试 Memcached 缓存
- 编写测试用例 
- 创建 
CacheServiceTest类: 
 - 创建 
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheServiceTest {@Autowiredprivate CacheService cacheService;@Testpublic void testCache() {String key = "test_key";String value = "Hello, Memcached!";cacheService.setToCache(key, value, 60); // 缓存一分钟String result = (String) cacheService.getFromCache(key);assertEquals(value, result);// 等待超过缓存时间try {Thread.sleep(60000);} catch (InterruptedException e) {e.printStackTrace();}result = (String) cacheService.getFromCache(key);assertNull(result);}
}
 
- 运行测试 
- 执行测试用例,验证缓存功能是否正常。
 
 
通过以上步骤,您已成功搭建 Memcached 服务并将其集成到应用程序中,实现了数据的缓存功能。
