最近,我在我的项目中使用RedisTemplate与jedis连接工厂来从redis获取值。我发现当数据库索引与0不同时,RedisTemplate将在操作之前和之后执行“select”命令。
我使用的演示代码非常基本
for (int i = 0; i < 2; i++) {
String value = redisTemplate.opsForValue().get("hello");
System.out.println(value);
}
redis监视器的样本输出
1512198566.756217 [0 192.168.33.1:59691] "SELECT" "4"
1512198566.757251 [4 192.168.33.1:59691] "GET" "hello"
1512198566.758367 [4 192.168.33.1:59691] "SELECT" "0"
1512198566.761262 [0 192.168.33.1:59691] "SELECT" "4"
1512198566.763201 [4 192.168.33.1:59691] "GET" "hello"
1512198566.764959 [4 192.168.33.1:59691] "SELECT" "0"
然而JedisPool没有类似的过程
1512198527.317110 [0 192.168.33.1:59676] "SELECT" "4"
1512198527.325005 [4 192.168.33.1:59676] "GET" "hello"
1512198527.334189 [4 192.168.33.1:59676] "GET" "hello"
RedisTemplate执行额外“选择”的好处是什么,频繁的“选择”命令会降低客户端性能吗?