redis请求量巨大时也会存在速度瓶颈
可以使用管道技术,redis客户端与服务器交互遵循TCP通讯协议,网络请求一次只能发一条命令(每一次set,get只能存取一条数据),高并发时会限制读取缓存的效率;而管道技术优点在于客户端可以一次发多条命令,结果也是一次性获取多条结果,能够提升缓存读取效率。
private void pipeLine(){
Jedis jedis = new Jedis();
Pipeline pipeline = jedis.pipelined();
String key = 1 + ":";
String value = "value";
pipeline.set(key,value);
//获取所有的response
pipeline.sync();
pipeline.get(key);
}
在Redis中,如果客户端使用管道发送了多条命令,那么服务器就会将多条命令放入一个队列中,这一操作会消耗一定的内存,所以管道中命令的数量并不是越大越好(太大容易撑爆内存),而是应该有一个合理的值。
又想到了管道技术其实和hmG(S)et有些相似,不过一个是高并发存取一个对象,一个将大量数据存储为hashMap数据结构后存取