前言
一般来说,查询成为很多应用对外的性能瓶颈,其主要原因在于一旦并发量上来了,应用后台和数据库或者其他的存储服务的IO交互次数增多了,而服务器的线程资源开销是有限的,如何减少IO次数,这是优化要考虑的一个重要问题
使用redis也是如此,试想某些功能的数据使用了缓存,大量的并发请求过来时,是否可以考虑将同类型的数据查询一次性的提交给redis得到查询结果而不是逐个通过get(key)的方式获取更好呢?
下面介绍两种在java中优化查询的方式
1、使用multiget批量查询多个key
新增工具类
@Component
public class RedisUtils {
@Autowired
private RedisTemplate redisTemplate;
public <T> List<T> multiGet(String... keys){
List<String> searchKeys = Arrays.asList(keys);
return redisTemplate.opsForValue().multiGet(searchKeys);
}
}
测试:
@Autowired
private RedisUtils redisUtils;
@Test
public void testMultiget() {
Map<String,Object> keys = new HashMap<>();
keys.put("name","张三");
keys.put("ag