I am using Jedis to connect with a Redis server in a REST service.
When I am calling the web service I want to do operations like jedis.hmget , jedis.exits and hgetALL.
For example:
jedis.hmget("employee:data:" + emp_user_id, "employee_id").get(0);
The configuration that I am using for Redis is:
Jedis jedis;
JedisShardInfo shardInfo;
@PostConstruct
public void init() {
try {
shardInfo = new JedisShardInfo(Config.getRedisHost(), Config.getRedisPort());
shardInfo.setPassword(Config.getRedisPassword());
jedis = new Jedis(shardInfo);
jedis.select(2);
//jedis.se
} catch (Exception e) {
logger.error("Exception in init ------- > " + e);
}
}
I know that Jedis is NOT thread safe. When I am using 1000 threads at once to call the service at that time I am getting an exception as Unexpected end of stream. I want to know Jedis pool is thread safe? Unable to find a specific solution for it.
Thanks. Any Help would be appreciated.
Use JedisPool This allows you to talk to redis from multiple threads while still getting the benefits of reused connections. The JedisPool object is thread-safe and can be used from multiple threads at the same time. This pool should be configured once and reused.
The Java CodeJedis jedis = new Jedis("localhost"); // prints out "Connection Successful" if Java successfully connects to Redis server. Here is a breakdown of the above code: Jedis jedis = new Jedis("localhost"); This connects our Java to Redis server running on our local host.
If we create a separate Redis connection for a thread it will be overhead for the Redis server. We need to have a pool of connections in multi-threaded environments to address these challenges. This allows us to talk to Redis from multiple threads while still getting the benefits of reused connections.
JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost", portno, 10000,
"password");
See here: https://github.com/xetorthio/jedis/wiki/Getting-started
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With