package org.radargun.service;
import org.radargun.traits.BasicOperations;
import redis.clients.jedis.JedisCluster;
public class RedisClientOperations implements BasicOperations {
protected final RedisClientService service;
public RedisClientOperations(RedisClientService service) {
this.service = service;
}
@Override
public <K, V> Cache<K, V> getCache(String cacheName) {
return new RedisCacheAdapter(service.jedisCluster);
}
private class RedisCacheAdapter<K, V> implements BasicOperations.Cache<byte[], byte[]> {
private JedisCluster jedisCluster;
public RedisCacheAdapter(JedisCluster jedisCluster) {
this.jedisCluster = jedisCluster;
}
@Override
public byte[] get(byte[] key) {
return jedisCluster.get(key);
}
@Override
public boolean containsKey(byte[] key) {
return jedisCluster.exists(key);
}
@Override
public void put(byte[] key, byte[] value) {
jedisCluster.set(key, value);
}
@Override
public byte[] getAndPut(byte[] key, byte[] value) {
return jedisCluster.getSet(key, value);
}
@Override
public boolean remove(byte[] key) {
return jedisCluster.del(key) > 0;
}
@Override
public byte[] getAndRemove(byte[] key) {
byte[] bytes = jedisCluster.get(key);
jedisCluster.del(key);
return bytes;
}
@Override
public void clear() {
throw new UnsupportedOperationException("Clearing redis is not supported by jedis.");
}
}
}