All Projects → andreas-schroeder → redisks

andreas-schroeder / redisks

Licence: other
Redis Kafka Streams State Store

Programming Languages

scala
5932 projects
java
68154 projects - #9 most used programming language
lua
6591 projects

Projects that are alternatives of or similar to redisks

Kafka Streams Scala
Thin Scala wrapper around Kafka Streams Java API
Stars: ✭ 192 (+418.92%)
Mutual labels:  kafka-streams
fdp-modelserver
An umbrella project for multiple implementations of model serving
Stars: ✭ 47 (+27.03%)
Mutual labels:  kafka-streams
kafka-serde-scala
Implicitly converts typeclass encoders to kafka Serializer, Deserializer, Serde.
Stars: ✭ 52 (+40.54%)
Mutual labels:  kafka-streams
Hivemq Mqtt Tensorflow Kafka Realtime Iot Machine Learning Training Inference
Real Time Big Data / IoT Machine Learning (Model Training and Inference) with HiveMQ (MQTT), TensorFlow IO and Apache Kafka - no additional data store like S3, HDFS or Spark required
Stars: ✭ 204 (+451.35%)
Mutual labels:  kafka-streams
kafka-streams-plumber
Plumber, for your dirtiest Kafka streaming jobs
Stars: ✭ 24 (-35.14%)
Mutual labels:  kafka-streams
kafka-cluster-infra
Terraform and Ansible to install a Kafka Cluster
Stars: ✭ 37 (+0%)
Mutual labels:  kafka-streams
Kafka Streams Dotnet
.NET Stream Processing Library for Apache Kafka 🚀
Stars: ✭ 173 (+367.57%)
Mutual labels:  kafka-streams
kotlin-kafka-and-kafka-streams-examples
Kafka with KafkaReactor and Kafka Streams Examples in Kotlin
Stars: ✭ 33 (-10.81%)
Mutual labels:  kafka-streams
example-kafkastreams
Kafka Streams DSL vs Processor API
Stars: ✭ 16 (-56.76%)
Mutual labels:  kafka-streams
KafkaStream-CQRS-EventSourcing
Event Sourcing(CQRS) and Materialized views with Kafka Streams
Stars: ✭ 22 (-40.54%)
Mutual labels:  kafka-streams
Kafka With Akka Streams Kafka Streams Tutorial
Code samples for the Lightbend tutorial on writing microservices with Akka Streams, Kafka Streams, and Kafka
Stars: ✭ 204 (+451.35%)
Mutual labels:  kafka-streams
Data Accelerator
Data Accelerator for Apache Spark simplifies onboarding to Streaming of Big Data. It offers a rich, easy to use experience to help with creation, editing and management of Spark jobs on Azure HDInsights or Databricks while enabling the full power of the Spark engine.
Stars: ✭ 247 (+567.57%)
Mutual labels:  kafka-streams
twitterstream
Twitter Streaming API Example with Kafka Streams in Scala
Stars: ✭ 49 (+32.43%)
Mutual labels:  kafka-streams
Strimzi Kafka Operator
Apache Kafka running on Kubernetes
Stars: ✭ 2,833 (+7556.76%)
Mutual labels:  kafka-streams
open-stream-processing-benchmark
This repository contains the code base for the Open Stream Processing Benchmark.
Stars: ✭ 37 (+0%)
Mutual labels:  kafka-streams
Mockedstreams
Scala DSL for Unit-Testing Processing Topologies in Kafka Streams
Stars: ✭ 184 (+397.3%)
Mutual labels:  kafka-streams
kafka-scala-examples
Examples of Avro, Kafka, Schema Registry, Kafka Streams, Interactive Queries, KSQL, Kafka Connect in Scala
Stars: ✭ 53 (+43.24%)
Mutual labels:  kafka-streams
e-shop
Sample Spring Cloud microservices e-shop.
Stars: ✭ 48 (+29.73%)
Mutual labels:  kafka-streams
kstreams-des-demo
Kafka Streams demo project containing Derivative Events, the Processor Api and Wall-clock examples
Stars: ✭ 24 (-35.14%)
Mutual labels:  kafka-streams
football-events
Event-Driven microservices with Kafka Streams
Stars: ✭ 57 (+54.05%)
Mutual labels:  kafka-streams

Redisks

Build Status Download

Redis-Based State Stores for Kafka Streams

Why

Kafka Streams provides in-memory state stores and disk-based state stores (based on RocksDB) out of the box. While these options work great in most scenarios, they both rely on local storage and are not the best fit for continoulsy delivered apps on immutable servers (or stateless containers). In those scenarios, using an external state store (such as Redis) allows to save the application state when replacing the whole machine or the application container. This can allow smoother delivery, as the state stores do not have to be rebuilt before the app can start processing records.

How to use

Gradle

repositories {
   jcenter()
}

dependencies {
    compile group: 'com.github.andreas-schroeder', name: 'redisks_2.12', version: '0.0.0'
}

sbt

resolvers += Resolver.bintrayRepo("and-schroeder", "maven")

libraryDependencies += "com.github.andreas-schroeder" %% "redisks" % "0.0.0"

Defining a state store supplier

Redisks depends on lettuce for connecting to Redis. A KeyValueStore (to be used to store the state of a KTable, e.g.), can be created as follows

import com.lambdaworks.redis.RedisClient;
import com.github.andreas_schroeder.redisks.RedisStore;

RedisClient client = ...
StateStoreSupplier<KeyValueStore> store = RedisStore.<String, String>keyValueStore(name)
                .withClient(client)
                .withKeys(Serdes.String())
                .withValues(Serdes.String())
                .withKeyComparator(Comparator.naturalOrder())
                .build();

Some examples for using the Redis state stores can be found in the acceptance tests.

Benchmark results

The benchmark can be found here. The results below were obtained on a MacBook Pro (Retina, 15-inch, Mid 2015), with a 2,8 GHz Intel Core i7 CPU. Currently, the attainable throughput depends significantly on the size of the key-value entries stored.

key/value size put throughput get throughput
100 bytes 6.04 MiB/Sec 2.23 MiB/Sec
1024 bytes 57.28 MiB/Sec 19.43 MiB/Sec
2048 bytes 94.58 MiB/Sec 33.13 MiB/Sec
4000 bytes 129.53 MiB/Sec 50.79 MiB/Sec
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].