xadd metodu
İmzası şöyle. Stream'e yeni veri ekler
String xadd(K key, Map<K, V> body);
Örnek
Bu örnekte Lettuce ile Testcontainers ile başlatılan Redis Stream'e veri yazılıyor. Örneğin bir kısmını Getting Started with Redis Streams and Java yazısından aldım
Maven için şu satırı dahil ederiz
<dependency><groupId>com.redis</groupId> <artifactId>testcontainers-redis</artifactId> <version>2.0.1</version> <scope>test</scope> </dependency> <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>6.2.3.RELEASE</version> </dependency>
Şöyle yaparız. Burada JUnit4 kullanıldığı için @ClassRule anotasyonu var.
import com.redis.testcontainers.RedisContainer; @ClassRule public static final RedisContainer container = new RedisContainer(DockerImageName.parse("redis:6.2.6")) .withLogConsumer(new Slf4jLogConsumer(LOGGER).withPrefix("Docker"));
Veri ile doldururuz. Şöyle yaparız. Artık aboneler veriyi okuyabilir.
import io.lettuce.core.RedisClient; import io.lettuce.core.api.StatefulRedisConnection; import io.lettuce.core.api.sync.RedisCommands; void insertData() { String redisURI = container.getRedisURI(); try (RedisClient client = RedisClient.create(redisURI); StatefulRedisConnection<String, String> connection = client.connect()) { RedisCommands<String, String> syncCommands = connection.sync(); for (int index = 0; index < ITEM_COUNT; index++) { // Redis Streams messages are string key/values in Java. Map<String, String> messageBody = createMessageBody(index); String messageId = syncCommands.xadd( STREAM_NAME, messageBody); LOGGER.info("Message {} : {} posted", messageId, messageBody); } } } Map<String, String> createMessageBody(int index) { Map<String, String> messageBody = new HashMap<>(); messageBody.put("speed", String.valueOf(index)); messageBody.put("direction", "270"); messageBody.put("sensor_ts", String.valueOf(System.currentTimeMillis())); return messageBody; }
Hiç yorum yok:
Yorum Gönder