以下是 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 服務并將其集成到應用程序中,實現了數據的緩存功能。