由于最近项目需要引入Redis用作缓存管理,所以开始了对Redis的学习。自学还算顺利,但到了java接入的时候,看到jedis的链接池,就产生了疑问:明明server端对数据的读写时单线程,为什么还要用链接池呢?
经过一轮的百度,得知这里面有两个原因:
①主要原因:redis的性能瓶颈主要时网络通讯——网络通讯速度比redis处理速度要慢许多。单客户端会导致,网络通讯的时间里,redis处于闲暇,无法发挥其处理能力;
②不那么主要(个人认为也很主要)原因:jedis非线程安全。但是百度到的帖子和博客,均没有给出靠谱的测试程序去证明这个说法。
于是乎就自己试着写一个简单的测试程序去求证,结果感人~下面上测试代码和运行结果:
先说结论吧:jedis确实是非线程安全的。
代码:
/**
* Created by cwz
* on 2018-09-20
*/
public class Test {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
//查看服务是否运行
Syste