@Autowired
private StringRedisTemplate userRedisTemplate; //StringRedisTemplate 是工具类
0.redis数据库添加数据
String prefix = "-"+phone; //加前缀
userRedisTemplate.opsForValue().set(prefix,JSONObject.toJSONString(userDO),1, TimeUnit.DAYS);
注:
key : prefix
value : JSONObject.toJSONString(userDO)
过期时间 : 1 (此处单位为天,还有其他)
过期单位 : TimeUnit.DAYS(过期的单位,此处为天)
1.根据key获取数据
String s = userRedisTemplate.opsForValue().get(phone);
UserDO userDO=JSON.parseObject(s,UserDO.class); //json数据转为对象
2.根据所有的key,查询所有的redis数据,放入map集合中
Map<String, Object> finalRedisMap = new HashMap<>(); //finalRedisMap 最终的
String redisKeysPrefix = "-*"; //以-为前缀,*指的是查询所有的key
Set<String> redisKeys = userRedisTemplate.keys(redisKeysPrefix ); //根据key前缀为-,查询redis数据库中所有的数据
//将查询的值,遍历到finalRedisMap集合中,转换为UserDO对象
redisKeys.stream().filter(o->Objects.nonNull(userRedisTemplate.opsForValue().get(o))).forEach(o->{
finalRedisMap.put(o, JSON.parseObject(userRedisTemplate.opsForValue().get(o),UserDO.class));
});
3.根据key删除数据
userRedisTemplate.delete(key);
4.key是集合,根据key删除redis数据(key是以-为前缀的)
//根据key从redis删除数据
@Override
public Boolean delUserRedisAll(List<String> phoneList) throws ServiceException {
Boolean delete=false;
if(phoneList.size()>0){
String prefixPhone=null;
a:for(int i=0;i<phoneList.size();i++){
prefixPhone="-"+phoneList.get(0);//遍历集合,给每个元素加前缀
phoneList.remove(0); //每次都删掉集合中的第一个元素
phoneList.add(prefixPhone);
for(int j=phoneList.size();j==0;j--){
if(phoneList.get(0).equals(phoneList.get(j))){//外层循环中的第一个元素与内层比较,是否和内层循环有重复的数据
break a;
}
}
}
Iterator<String> it1 = phoneList.iterator();
while (it1.hasNext()) {
delete = userRedisTemplate.delete(it1.next());
}
}
return delete;
}
5.StringRedisTemplate常用操作
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间
stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作
stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val
stringRedisTemplate.boundValueOps("test").increment(1);//val +1
stringRedisTemplate.getExpire("test")//根据key获取过期时间
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
stringRedisTemplate.delete("test");//根据key删除缓存
stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合