支援類別
org.springframework.data.redis.support
套件提供了各種可重複使用的組件,這些組件依賴 Redis 作為後端儲存。目前,此套件包含各種基於 JDK 的介面實作,這些實作基於 Redis,例如 atomic 計數器和 JDK Collections。
RedisList 與 Java 21 SequencedCollection 向前相容。 |
原子計數器讓包裝 Redis 鍵的遞增變得容易,而集合則允許輕鬆管理 Redis 鍵,且具有最小的儲存暴露或 API 洩漏。特別是,RedisSet
和 RedisZSet
介面提供了對 Redis 支援的集合操作的輕鬆存取,例如 intersection
和 union
。RedisList
在 Redis 之上實作了 List
、Queue
和 Deque
契約(及其等效的阻塞兄弟),將儲存公開為具有最少配置的 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 實作可以替換為記憶體內的實作)。