#项目业务中存在大批量数据的处理,需要频繁调用算法以及查询数据#
开发思路:因 算法相对来说是固定的,所以对业务数据中生成的结果的数据存入redis中,下次遇到相同的业务数据直接从redis中获取结果,不进行计算。从而避免浪费服务器计算资源。
清除缓存的时机:对redis来说当算法发生改变时,根据指定的key 删除缓存的结果。
因业务数据中存在中文等数据,所以决定采用哈希算法的方式存储计算结果。
项目框架采用Springboot+Maven
使用 Spring Data Redis 进行redis 的操作
MAVEN 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
存 取 删
/**
* @Author: lixu
* @Description: 哈希算法set redis
* @Version: 1.0
*/
public boolean hashSet(final String hashKey, String key, Object value) {
boolean result;
try {
redisTemplate.opsForHash().put(hashKey, key, value);
result = true;
} catch (Exception e) {
result = false;
log.error(e.getMessage(), e);
}
return result;
}
/**
* @Author: lixu
* @Description: 哈希算法 根据hashkey 和 key获取值
* @Version: 1.0
*/
public Object hashGet(final String hashKey, String key) {
Object result;
try {
result = redisTemplate.opsForHash().get(hashKey, key);
} catch (Exception e) {
result = null;
log.error(e.getMessage(), e);
}
return result;
}
/**
* @Author: lixu
* @Description: 哈希算法删除
* @Version: 1.0
*/
public boolean hashDel(final String hashKey, String key) {
boolean result;
try {
redisTemplate.opsForHash().delete(hashKey, key);
result = true;
} catch (Exception e) {
result = false;
log.error(e.getMessage(), e);
}
return result;
}
/**
* @Author: lixu
* @Description: 哈希算法获取hashkey中的所有key和值
* @Version: 1.0
*/
public Map<Object, Object> hashGetKey(final String hashKey) {
Map<Object, Object> result;
try {
result = redisTemplate.opsForHash().entries(hashKey);
} catch (Exception e) {
result = null;
log.error(e.getMessage(), e);
}
return result;
}
说是 直接存就行 redis会自动转换成hash值进行存放 不需要手动转哈希值再set