@Component
public class RedisComponent implements RedisI {
@Resource
private StringRedisTemplate stringRedisTemplate;
@Override
public void setString(String key, String value, int expire) {
ValueOperations<String, String> ops = this.stringRedisTemplate.opsForValue();
ops.set(key, value);
if (expire != 0) {
setExpireTime(key, expire);
}
}
@Override
public String getString(String key) {
return this.stringRedisTemplate.opsForValue().get(key);
}
@Override
public void deleteString(String key) {
this.stringRedisTemplate.delete(key);
}
@Override
public void addHSet(String totalKey, String key, String value, int expire) {
this.stringRedisTemplate.opsForHash().put(totalKey, key, value);
if (expire != 0) {
setExpireTime(totalKey, expire);
}
}
@Override
public String getHget(String totalKey, String key) {
return AppUtil.manageString(this.stringRedisTemplate.opsForHash().get(totalKey, key), "");
}
@Override
public Long getHSize(String totalKey) {
return this.stringRedisTemplate.opsForHash().size(totalKey);
}
@Override
public Set<Object> getHKeys(String totalKey) {
return this.stringRedisTemplate.opsForHash().keys(totalKey);
}
@Override
public void hDelete(String hashKey, String key) {
this.stringRedisTemplate.opsForHash().delete(hashKey, key);
}
@Override
public void setSet(String key, String... member) {
stringRedisTemplate.boundSetOps(key).add(member);
}
@Override
public void removeSet(String key, Object... member) {
stringRedisTemplate.boundSetOps(key).remove(member);
}
@Override
public Set<String> getSetMember(String key) {
return stringRedisTemplate.boundSetOps(key).members();
}
@Override
public boolean exists(String key) {
if (!"".equalsIgnoreCase(AppUtil.manageString(key, ""))) {
return stringRedisTemplate.hasKey(key);
}
return false;
}
@Override
public boolean exists(String totalKey, String key) {
return this.stringRedisTemplate.opsForHash().hasKey(totalKey, key);
}
/**
* 设置过期时间
* @param key 健
* @param expire 过期时间(单位: 秒)
*/
private void setExpireTime(String key, int expire) {
if (expire > 0) {
this.stringRedisTemplate.expire(key, expire, TimeUnit.SECONDS);
} else {
// 如果设置的时间少于1时, 则默认1分钟过期
this.stringRedisTemplate.expire(key, 1, TimeUnit.MINUTES);
}
}
}
// 接口方法
public interface RedisI {
void setString(String key, String value, int expire);
String getString(String key);
void deleteString(String key);
void addHSet(String totalKey, String key, String value, int expire);
String getHget(String totalKey, String key);
Long getHSize(String totalKey);
Set<Object> getHKeys(String totalKey);
void hDelete(String hashKey, String key);
void setSet(String key, String... member);
void removeSet(String key, Object... member);
Set<String> getSetMember(String key);
boolean exists(String key);
boolean exists(String totalKey, String key);
}