redis使用
2021-08-03 本文已影响0人
西谷haul
记录使用redis中遇到得问题:
1、程序将调用流程得functionId保存在redis中,redis中可能会保存到错误得数据,当错误数据已经存在时,程序调用到流程,会先通过functionId去redis中查询是否已存在,若不存在,才会去数据库中查询数据,若存在,则直接调用了这个错误得流程。
解决方法:
一、首先引入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
//注册使用redisTemplate
@Autowired
private RedisTemplate<String,Object> redisTemplate;
二、针对String和hash类型的数据操作
1、string
//插入数据
ValueOperations<String, Object> hashTokenOp = redisTemplate.opsForValue();
hashTokenOp.set(tokenKey,tokenSession,10, TimeUnit.MINUTES);
//获取数据
ValueOperations<String, Object> hashTokenOp = redisTemplate.opsForValue();
return (TokenSession) hashTokenOp.get(tokenKey);
//删除数据
public void deleteTokenInfo(String tokenKey) {
redisTemplate.delete(tokenKey);
}
set方法源码
如上查看set方法可以发现有很多的方法,上面示例使用的是key,value,过期时间,时间单位的方法。在获取时,只需要拿键值来执行get方法即可。删除数据则更简单,只需要使用redisTemplate调用delete,传入key即可。
1、hash
//插入数据
@Override
public void putUserInfo(String userName, String token) {
HashOperations<String, String, String> hashUserOp =redisTemplate.opsForHash();// redisTemplate.opsForHash();
hashUserOp.put(USER_KEY,userName,token);
}
//查询数据
public String getUserInfo(String userName) {
HashOperations<String, String, String> hashUserOp =redisTemplate.opsForHash();
return hashUserOp.get(USER_KEY, userName);
}
hash操作方法源码
查看源码可知,查询操作和删除操作只需要传入hash的key,以及hash内部的key即可。插入操作传只是多传一个参数作为value。