package io.renren.common.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @program: ivvdata-security
* @description: redis工具类
* @author: HYJ
* @create: 2019-09-27 18:00
*/
@Component
public class RedisUtil {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Resource
private RedisTemplate<String, Object> redisTemplate;
/**
* 存储数据
*/
public void set(String key, String value){
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
ops.set(key, value);
}
/**
* 获取数据
*/
public String get(String key){
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
return ops.get(key);
}
/**
* 添加数据到list集合【操作List】
* @param key List名称
* @param value 存放的数值
* @return 存放完毕之后,当前List的长度
*/
public Long leftPush(String key, Object value) {
ListOperations<String, Object> opsForList = redisTemplate.opsForList();
Long length = opsForList.leftPush(key,value);
return length;
}
/**
* 向List集合中存放集合
* @param key 被操作的List
* @param list 需要添加的List
* @return 存放完毕之后,当前List的长度
*/
public Long leftPushAll(String key, List<Object> list) {
ListOperations<String, Object> opsForList = redisTemplate.opsForList();
return opsForList.leftPushAll(key,list);
}
/**
* 获取List集合中的数据
* @param key List名称
* @return list中存放的数据
*/
public List<Object> range(String key) {
ListOperations<String, Object> opsForList = redisTemplate.opsForList();
return opsForList.range(key, 0, -1);
}
/**
* 移除List中的元素
* @param key 被操作的List
* @param count 要删除的元素个数【为负数表示从尾部,向头部删除;正数则相反】
* @param value 要删除的元素值
* @return 移除完毕之后,当前List的长度
*/
public Long remove(String key, long count, Object value) {
ListOperations<String, Object> opsForList = redisTemplate.opsForList();
return opsForList.remove(key,count,value);
}
/**
* 设置超期时间
*/
public boolean expire(String key, long expire){
Boolean expire2 = stringRedisTemplate.expire(key, expire, TimeUnit.SECONDS);
return expire2;
}
/**
* 删除数据
*/
public void remove(String key){
stringRedisTemplate.delete(key);
}
/**
* 自增操作
* @param delta 自增步长
*/
public Long increment(String key, long delta){
return stringRedisTemplate.opsForValue().increment(key,delta);
}
}