public interface Cache<T> {
T get(Object key);
List multiGet(Collection keys);
void multiSet(Map map);
void multiDel(Collection keys);
void put(Object key, T value);
void put(Object key, T value, int exp);
void remove(Object key);
void vagueDel(Object key);
void clear();
void putHash(Object key,Object hashKey,Object hashValue);
void putAllHash(Object key,Map map);
T getHash(Object key,Object hashKey);
Map<Object,Object> getHash(Object key);
}
@Component
public class RedisCacheImpl implements Cache {
@Autowired
private RedisTemplate redisTemplate;
public RedisCacheImpl() {
}
@Override
public Object get(Object key) {
return redisTemplate.opsForValue().get(key);
}
@Override
public List multiGet(Collection keys) {
return redisTemplate.opsForValue().multiGet(keys);
}
@Override
public void multiSet(Map map) {
redisTemplate.opsForValue().multiSet(map);
}
@Override
public void multiDel(Collection keys) {
redisTemplate.delete(keys);
}
@Override
public void put(Object key, Object value) {
redisTemplate.opsForValue().set(key, value);
}
@Override
public void put(Object key, Object value, int exp) {
redisTemplate.opsForValue().set(key, value, exp, TimeUnit.SECONDS);
}
@Override
public void remove(Object key) {
redisTemplate.delete(key);
}
@Override
public void vagueDel(Object key) {
Set<String> keys = redisTemplate.keys(key + "*");
redisTemplate.delete(keys);
}
@Override
public void clear() {
Set keys = redisTemplate.keys("*");
redisTemplate.delete(keys);
}
@Override
public void putHash(Object key, Object hashKey, Object hashValue) {
redisTemplate.opsForHash().put(key, hashKey, hashValue);
}
@Override
public void putAllHash(Object key, Map map) {
redisTemplate.opsForHash().putAll(key, map);
}
@Override
public Object getHash(Object key, Object hashKey) {
return redisTemplate.opsForHash().get(key, hashKey);
}
@Override
public Map<Object, Object> getHash(Object key) {
return this.redisTemplate.opsForHash().entries(key);
}
}