Jedis线程安全

Posted by 杨一 on 2020-06-16

Jedis

Jedis类中有RedisInputStream和RedisOutputStream两个属性,而发送命令和获取返回值都是使用这两个成员变量,显然,这很容易引发多线程问题。测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class BadConcurrentJedisTest {
private static final ExecutorService pool = Executors.newFixedThreadPool(20);
private static final Jedis jedis = new Jedis("192.168.58.99", 6379);

public static void main(String[] args) {
for(int i=0;i<20;i++){
pool.execute(new RedisSet());
}
}
static class RedisSet implements Runnable{
@Override
public void run() {
while(true){
jedis.set("hello", "world");
}
}

}