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 Strings 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);
}