Şu satırı dahil ederiz
Bu sınıf ReactiveRedisOperations'tan kalıtırimport org.springframework.data.redis.connection.stream.ObjectRecord;import org.springframework.data.redis.connection.stream.StreamRecords;import org.springframework.data.redis.core.ReactiveRedisTemplate;
constructor
Şöyle yaparız
@Configuration
public class ReactiveRedisConfiguration {
private final Environment env;
public ReactiveRedisConfiguration(Environment env) {
this.env = env;
}
@Bean
public ReactiveRedisConnectionFactory reactiveRedisConnectionFactory() {
return new LettuceConnectionFactory(
Objects.requireNonNull(env.getProperty("spring.redis.host")),
Integer.parseInt(Objects.requireNonNull(env.getProperty("spring.redis.port"))));
}
@Bean
public ReactiveRedisOperations<String, Object> redisOperations(
ReactiveRedisConnectionFactory reactiveRedisConnectionFactory) {
Jackson2JsonRedisSerializer<Object> serializer =
new Jackson2JsonRedisSerializer<>(Object.class);
RedisSerializationContext.RedisSerializationContextBuilder<String, Object> builder =
RedisSerializationContext.newSerializationContext(new StringRedisSerializer());
RedisSerializationContext<String, Object> context = builder.value(serializer)
.hashValue(serializer)
.hashKey(serializer).build();
return new ReactiveRedisTemplate<>(reactiveRedisConnectionFactory, context);
}
}Örnek
Şöyle yaparız
public Mono<Object> set(String key, String hashKey, Object val) {
return redisOperations.opsForHash().put(key, hashKey, val).map(b -> val);
}
public Flux<Object> get(@NotNull String key){
return redisOperations.opsForHash().values(key);
}
public Mono<Object> get(String key, Object hashKey) {
return redisOperations.opsForHash().get(key, hashKey);
}
public Mono<Long> remove(String key, Object hashKey) {
return redisOperations.opsForHash().remove(key, hashKey);
}Örnek
Mesaj publish etmek için şöyle yaparız
String streamKey = "movie-events"MovieDetails movieDetails = ...ObjectRecord<String, MovieDetails> record = StreamRecords.newRecord().ofObject(movieDetails).withStreamKey(streamKey);redisTemplate.opsForStream().add(record).subscribe(System.out::println);
opsForZSet metoduimport org.springframework.data.redis.connection.stream.ObjectRecord;import org.springframework.data.redis.stream.StreamListener;public class MovieEventConsumer implements
StreamListener<String, ObjectRecord<String, MovieDetails>> {@Overridepublic void onMessage(ObjectRecord<String, MovieDetails> record) {...}}
Şöyle yaparız
this.redisTemplate.opsForZSet().incrementScore("MyMovie", "Likes", 1).subscribe();
Hiç yorum yok:
Yorum Gönder