How do I access binary data using Vert.x-redis or Quarkus Redis Client?
Vert.x-redis provides the RedisAPI
class to access most Redis functionality. The methods provided by RedisAPI
only take String
s as arguments, which it encodes in UTF-8. With Quarkus you get to choose between RedisClient
and ReactiveRedisClient
, both of which mirror RedisAPI
, again only containing String
-based methods.
So how do you store binary strings?
With Vert.x-redis, use the send
method on the Redis
class, which is the lower-level interface underlying RedisAPI
. Similarly, with Quarkus, instead of injecting a RedisClient
or ReactiveRedisClient
, inject the lower-level MutinyRedis
:
@Inject
MutinyRedis mutinyRedis;
Uni<Void> set(String key, byte[] data) {
return mutinyRedis
.send(
Request.cmd(Command.SET)
.arg(key)
.arg(data))
.replaceWithVoid();
}
Uni<byte[]> get(String key) {
return mutinyRedis
.send(
Request.cmd(Command.GET)
.arg(key))
.ifNotNull()
.transform(Response::toBytes);
}