В эпоху микросервисов мы обычно используем распределённые кэши для повышения параллелизма системы. Например, memcached и Redis являются довольно известными решениями. Однако часто, как обычные бизнес-разработчики, они могут не хотеть заботиться о том, какой именно кеш используется внизу — memcached или Redis. И также удобные стратегии кеширования должны быть заключены в компонент кеша, чтобы использовать их программисты. Это и есть моя цель создания этого компонента. В будущем будет постепенно поддерживаться различные реализации, доступные пользователям.
Компонент состоит из двух модулей:
<dependency>
<groupId>com.xuanner</groupId>
<artifactId>xcache-core</artifactId>
<version>1.0</version>
</dependency>
```java
/**
* Получение spy клиента
*
* @return spy клиент
*/
public static CacheClient getSpyClient() {
SpyClientConfig config = new SpyClientConfig();
config.setHost("xxx");
config.setPort(bk11211);
config.setUsername("xxx");
config.setPassword("xxx");
return new CacheClientBuilder().config(config).build();
}
## Получение клиентской библиотеки xmemcached
```java
/**
* Получение клиента xmemcached
*
* @return Клиентская библиотека xmemcached
*/
public static CacheClient getXmemcacheClient() {
XMemcachedClientConfig config = new XMemcachedClientConfig();
config.setHost("xxx");
config.setPort(bk11211);
config.setUsername("xxx");
config.setPassword("xxx");
return new CacheClientBuilder().config(config).build();
}
```
### Класс тестирования клиента
```java
public class ClientTest {
private CacheClient cacheClient;
@Before
public void setup() {
cacheClient = getSpyClient();
}
@Test
public void test() {
// Удаление данных
cacheClient.delete("testKey");
// Установка данных
cacheClient.put("testKey", "testValue", 2000, TimeUnit.MILLISECONDS);
// Получение данных
String testValue = (String) cacheClient.get("testKey");
}
}
```
```
2. API модуля кэширования:
```java
## Глобальная конфигурация кэша
```java
/**
* Получение глобальной конфигурации кэша
*
* @return Конфигурация кэша
*/
public static GlobalCacheConfig getGlobalCacheConfig() {
GlobalCacheConfig globalCacheConfig = new GlobalCacheConfig();
globalCacheConfig.setAppName("xuannerApp");
globalCacheConfig.setAppCacheVersion(1);
return globalCacheConfig;
}
```## Описание
### Создание кэша
Метод `getCache` создает объект кэша с использованием стратегии передачи.
```java
public static Cache<String> getCache(String strategy) {
return new CacheBuilder<String>()
.setCacheClient(getSpyClient())
.setCacheLoader(getCacheLoader())
.setGlobalCacheConfig(getGlobalCacheConfig())
.setModuleCacheConfig(getModuleCacheConfig())
.build(strategy);
}
```
### Класс тестирования кэша
Класс `CacheTest` использует метод `setup`, чтобы установить кэш с асинхронной стратегией.
```java
public class CacheTest {
private Cache<String> cache;
@Before
public void setup() {
// ASYNC — асинхронная стратегия кэширования, SIMPLE — синхронная стратегия кэширования
cache = getCache(CacheBuilder.ASYNC);
}
}``` @Test
public void test() {
// Удаление записи из кэша
cache.delete("testKey");
// Получение значения из кэша, если запись отсутствует, вызывается метод `get` интерфейса `CacheLoader`
// для получения данных, после чего данные автоматически кэшируются и возвращаются
cache.get("testKey");
// Установка значения в кэше, что также вызывает метод `set` интерфейса `CacheLoader`
// для получения данных, после чего данные автоматически кэшируются
cache.set("testKey");
}
}
```
#### Документация
Документация доступна по адресу: https://apidoc.gitee.com/xuan698400/xcache
#### Контактная информация
1. Имя: Ху Ан
2. Электронная почта: javaandswing@163.com
3. QQ: 349309307
4. Личный блог: xuanner.com
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )