支持类

org.springframework.data.redis.support 提供了各种可重用的组件,这些组件以 Redis 作为底层存储。 目前,该包包含了基于 Redis 构建的各种 JDK 接口实现,例如 原子 计数器和 JDK 集合(Collections)。spring-doc.cadn.net.cn

RedisList 与 Java 21 SequencedCollection 向前兼容。

原子计数器使得封装 Redis 键的递增操作变得简单,而集合则允许以最小的存储暴露或 API 泄露来轻松管理 Redis 键。 特别是,RedisSetRedisZSet 接口提供了对 Redis 支持的集合操作的便捷访问,例如 intersectionunionRedisList 在 Redis 之上实现了 ListQueueDeque 契约(以及它们的等效阻塞兄弟接口),将存储暴露为 FIFO(先进先出)、LIFO(后进先出)或容量受限的集合,配置极其简便。 以下示例展示了使用 RedisList 的 Bean 的配置:spring-doc.cadn.net.cn

@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 配置示例:spring-doc.cadn.net.cn

public class AnotherExample {

  // injected
  private Deque<String> queue;

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

如上例所示,使用代码与实际的存储实现是解耦的。 事实上,并没有任何迹象表明底层使用了 Redis。 这使得从开发环境迁移到生产环境的过程变得透明,并极大地提高了可测试性(Redis 实现可以被内存中的实现所替代)。spring-doc.cadn.net.cn