Redis cache and key/value data store for Jooby. exports a {{jedis}} service.
<dependency>
<groupId>org.jooby</groupId>
<artifactId>jooby-jedis</artifactId>
<version>{{version}}</version>
</dependency>It is pretty straightforward:
# define a database URI
db = "redis://localhost:6379"{
use(new Redis());
get("/:key/:value", req -> {
try (Jedis jedis = require(Jedis.class)) {
jedis.set(req.param("key").value(), req.param("value").value());
return jedis.get(req.param("key").value());
}
});
}This module creates a [JedisPool]. A default pool is created with a max of 128 instances.
The pool can be customized from your application.conf:
db = "redis://localhost:6379"
# increase pool size to 200
jedis.pool.maxTotal = 200In case you need two or more Redis connection, just do:
{
use(new Redis()); // default is "db"
use(new Redis("db1"));
get("/:key/:value", req -> {
try (Jedis jedis = require("db1", Jedis.class)) {
jedis.set(req.param("key").value(), req.param("value").value());
return jedis.get(req.param("key").value());
}
});
}application.conf:
db = "redis://localhost:6379/0"
db1 = "redis://localhost:6379/1"Pool configuration for db1 is inherited from jedis.pool. If you need
to tweak the pool configuration for db1 just do:
db1 = "redis://localhost:6379/1"
# ONLY 10 for db1
jedis.db1.maxTotal = 10For more information about Jedis checkout the wiki
{{doc/jedis/jedis-session.md}}
That's all folks! Enjoy it!
TBD: Object mapping? https://github.com/xetorthio/johm?
{{appendix}}