入門

作業環境のセットアップをブートストラップする簡単な方法は、start.spring.io 経由で Spring ベースのプロジェクトを作成するか、Pleiades All in One (JDK, STS, Lombok 付属) または Spring Tools (英語) で Spring プロジェクトを作成することです。

サンプルリポジトリ

GitHub spring-data-examples リポジトリ [GitHub] (英語) には、ライブラリがどのように機能するかを知るためにダウンロードして試してみることができるいくつかの例がホストされています。

Hello World

まず、実行中の Redis サーバーをセットアップする必要があります。Spring Data Redis には Redis 2.6 以降が必要で、Spring Data Redis は、Redis 用の 2 つの一般的なオープンソース Java ライブラリである Lettuce [GitHub] (英語) および Jedis [GitHub] (英語) と統合されています。

これで、Redis に値を格納したり、Redis から値を読み取ったりする単純な Java アプリケーションを作成できるようになりました。

次の例に示すように、実行するメインアプリケーションを作成します。

  • 命令的

  • リアクティブ

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

public class RedisApplication {

	private static final Log LOG = LogFactory.getLog(RedisApplication.class);

	public static void main(String[] args) {

		LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory();
		connectionFactory.afterPropertiesSet();

		RedisTemplate<String, String> template = new RedisTemplate<>();
		template.setConnectionFactory(connectionFactory);
		template.setDefaultSerializer(StringRedisSerializer.UTF_8);
		template.afterPropertiesSet();

		template.opsForValue().set("foo", "bar");

		LOG.info("Value at foo:" + template.opsForValue().get("foo"));

		connectionFactory.destroy();
	}
}
import reactor.core.publisher.Mono;

import java.time.Duration;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.ReactiveRedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializationContext;

public class ReactiveRedisApplication {

	private static final Log LOG = LogFactory.getLog(ReactiveRedisApplication.class);

	public static void main(String[] args) {

		LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory();
		connectionFactory.afterPropertiesSet();

		ReactiveRedisTemplate<String, String> template = new ReactiveRedisTemplate<>(connectionFactory,
				RedisSerializationContext.string());

		Mono<Boolean> set = template.opsForValue().set("foo", "bar");
		set.block(Duration.ofSeconds(10));

		LOG.info("Value at foo:" + template.opsForValue().get("foo").block(Duration.ofSeconds(10)));

		connectionFactory.destroy();
	}
}

この単純な例でも、注目すべき点がいくつかあります。

  • RedisConnectionFactory (Javadoc) を使用して、RedisTemplate (Javadoc) (またはリアクティブ使用の場合は ReactiveRedisTemplate (Javadoc) ) のインスタンスを作成できます。接続ファクトリは、サポートされているドライバー上の抽象化です。

  • Redis はプレーンキー (「文字列」)、リスト、セット、ソートされたセット、ストリーム、ハッシュなどの幅広いデータ構造をサポートしているため、単一の使用方法はありません。