This blog post explains the motivation behind removing Project Lombok from one of the projects to which I contribute. It reflects my personal opinion and is not discouraging particular technologies. About three years ago, I got to know Project Lombok, a library that spices up Java code. I liked it from the beginning as it contributes so much useful functionality. ...
Read More »Home »
Reactive Relational Database Transactions
Spring Framework announced recently to ship with support for reactive transaction management.Let’s take an in-depth look at how this works for R2DBC, the reactive specification for SQL database access. Transaction Management is a pattern and not technology-specific. From that perspective, its properties and runtime behavior are a function of the implementing technology. TL; DR: From a database perspective, imperative and ...
Read More »Reactive Programming and Relational Databases
Imperative code eats threads at the pace of incoming requests while Software is eating the world. This post discusses the assumptions for reactive programming on the JVM and what this means for integrations – in particular, relational databases. The motivation to come up with a post is the constant increase in reactive programming adoption while some major building blocks are not yet available ...
Read More »A first look at Redis Streams and how to use them with Java
Redis Streams have made it into Redis’ unstable branch since the beginning of this year, and the first clients start with the adoption of Redis Streams APIs. That makes it an excellent time to take a look what Redis Streams provide and how you can use them from a client perspective. Disclaimer: Redis Streams are available as a first draft ...
Read More »Redis Client Lettuce 5 GA released
After a 13 months development phase and 208 solved tickets, it is my pleasure to announce general availability of Lettuce 5.0. This is a major release coming with several breaking changes and new interesting features and Java 9 compatibility. Get the release from Maven Central <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>5.0.0.RELEASE</version> </dependency> or download the release bundle from GitHub. Lettuce 5 introduces ...
Read More »Command Interfaces: Approaching Redis with dynamic APIs in Java
Redis is a data store supporting over 190 documented commands and over 450 command permutations. The community supports actively Redis development; each major Redis release comes with new commands. This year Redis was opened up for 3rd party vendors to develop modules that extend Redis functionality. Command growth and keeping track with upcoming modules are challenging for client developers and ...
Read More »Managing Secrets with Vault
How do you store Secrets? Passwords, API keys, secure Tokens, and confidential data fall into the category of secrets. That’s data which shouldn’t lie around. It mustn’t be available in plaintext in easy to guess locations. In fact, it must not be stored in plaintext in any location. Sensitive data can be encrypted by using the Spring Cloud Config Server ...
Read More »Iterate over all keys in a Redis Cluster
Redis provides a neat command to iterate over all keys on a node. It’s the SCAN command that is used to scan over keys and to return a cursor to resume then the scanning from the cursor position. Complexity comes in when using Redis Cluster. In the previous scenario, all keys are located on one Redis node. With Redis Cluster ...
Read More »Redis transactions
Redis transactions allow to group multiple commands and to execute them sequentially. The whole transactional state is isolated from other users and becomes visible once a transaction is committed. A Redis transaction is different from transactions in, let’s say, relational databases. A Redis transaction feels more like a queue/stack of commands because commands are queued and the execution is deferred. ...
Read More »