package me.brandonc.datastore.redis;
import me.brandonc.benchmark.config.Configuration;
import me.brandonc.datastore.DataStore;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisDataStore implements DataStore<Jedis> {
private JedisPool pool;
private Configuration configuration;
public RedisDataStore(Configuration configuration) {
this.configuration = configuration;
}
@Override
public void clean() {
Jedis jedis = getConnection();
jedis.flushDB();
releaseConnection(jedis);
}
@Override
public Jedis getConnection() {
return pool.getResource();
}
@Override
public void init() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(configuration.getIntValue("redis.maxActive"));
config.setMaxIdle(configuration.getIntValue("redis.maxIdle"));
pool = new JedisPool(config, configuration.getString("redis.host"), configuration.getIntValue("redis.port"));
}
@Override
public void releaseConnection(Jedis connection) {
pool.returnResource(connection);
}
@Override
public void destory() {
pool.destroy();
}
}