支援類

org.springframework.data.redis.support 包提供了各種可重用元件,它們都依賴 Redis 作為後端儲存。目前,該包在 Redis 之上包含了各種基於 JDK 的介面實現,例如原子計數器和 JDK 集合

RedisList 與 Java 21 SequencedCollection 向前相容。

原子計數器使得包裝 Redis 鍵增量操作變得容易,而集合則允許輕鬆管理 Redis 鍵,同時最大限度地減少儲存暴露或 API 洩露。特別是,RedisSetRedisZSet 介面提供了對 Redis 支援的集合操作(如 intersectionunion)的輕鬆訪問。RedisList 在 Redis 之上實現了 ListQueueDeque 契約(以及它們的等效阻塞兄弟),以最少的配置將儲存暴露為 FIFO(先進先出)、LIFO(後進先出)或有上限的集合。以下示例顯示了使用 RedisList 的 bean 的配置

  • Java

  • XML

@Configuration
class MyConfig {

  // …

  @Bean
  RedisList<String> stringRedisTemplate(RedisTemplate<String, String> redisTemplate) {
    return new DefaultRedisList<>(template, "queue-key");
  }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="
  http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="queue" class="org.springframework.data.redis.support.collections.DefaultRedisList">
    <constructor-arg ref="redisTemplate"/>
    <constructor-arg value="queue-key"/>
  </bean>

</beans>

以下示例展示了 Deque 的 Java 配置示例

public class AnotherExample {

  // injected
  private Deque<String> queue;

  public void addTag(String tag) {
    queue.push(tag);
  }
}

如前面的示例所示,消費程式碼與實際的儲存實現解耦。事實上,沒有任何跡象表明底層使用了 Redis。這使得從開發環境到生產環境的遷移變得透明,並大大提高了可測試性(Redis 實現可以用記憶體實現替換)。

© . This site is unofficial and not affiliated with VMware.