opsForValue提供了非常丰富的功能,可以操作String,List,Map等。
操作String
设置值:
redisTemplate.opsForValue().set(key, value);
获取值:
(String) redisTemplate.opsForValue().get(key);
删除值:
redisTemplate.delete(key);
操作Map
存放值:
redisTemplate.opsForHash().putAll("customMap", map);
获取值:
map = redisTemplate.opsForHash().entries("customMap");
删除值:
redisTemplate.opsForHash().entries("customMap").clear();
注: 删除值,用del是不行的,需要先entries(),然后clear。
其他
设置值
ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
if(!StringUtils.isEmpty(userInfo)){
String redisKey=USER_REDIS+userInfo;
String redisValue = valueOperations.get(redisKey);
if(!StringUtils.isEmpty(redisValue)){
return CrRpcResult.fail("redis重复");
}else{
valueOperations.set(redisKey,"1",60, TimeUnit.SECONDS);
}
}
取消值
默认设置的时间太长了,业务完成,当然要是放掉redis,设置为0会报错,设置为1毫秒可以起到同样的效果(懒得找delete rediskey的方法了)。
String redisKey=USER_REDIS+userInfo;
String redisValue = valueOperations.get(redisKey);
if(!StringUtils.isEmpty(redisValue)){ // 设置为1毫秒,很快就过期 注:这里不要设置为0,会报错
valueOperations.set(redisKey,"1",1, TimeUnit.MILLISECONDS);
}
redis取消通用注意点
取消的代码建议放到finally里面,因为如果逻辑因为某种原因没有走到最后,就没有取消,只能等到设置的超时时间完成才可以。
因此,反过来看,redis设置值一定要设置超时时间。