如果是多个线程thread,有几个线程创建几个新连接池,建议不要公用一个,否则研发人员无意间的一个close,会造成多个线程崩溃,程序“不动了”
blpop注意设置超时时间,jedis.blpop(60,"aaa"); 60单位秒,超过60秒没有消息本次blpop也自动结束
服务端启动指令
redis-server.exe redis.windows.conf
客户端连接指令
redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
查看当前连接数
info clients
查看最大连接数
config get maxclients
rpush指令,向队列中放入消息
package com.muyunfei.redis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class Redis_rpush {
private static JedisPool jedisPool = null;
public static void main(String[] args) {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(30);// 最大闲置个数
jedisPoolConfig.setMinIdle(10);// 最小闲置个数
jedisPoolConfig.setMaxTotal(30);// 最大连接数
jedisPoolConfig.setTestOnBorrow(true); //进行有效性检查
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(30000); //多长时间检查一次连接池中空闲的连接(ms)
jedisPoolConfig.setMinEvictableIdleTimeMillis(30000); //空闲连接多长时间后会被收回 (ms)
jedisPoolConfig.setTestOnReturn(true);
jedisPoolConfig.setNumTestsPerEvictionRun(-1);
//soTimeout:表示读取数据超时时间
//connectionTimeout:表示连接超时时间
jedisPool = new JedisPool(jedisPoolConfig,"172.20.184.218",6379);
Jedis jedis = jedisPool.getResource();
// for (int i = 0; i < 300000; i++) {
//
// jedis.rpush("HAIYI_DATA_ACQUISITION_SERVICE_SET", "reset " + i);
// }
// jedis.close();
int i=0;
while(true){
jedis.rpush("HAIYI_DATA_ACQUISITION_SERVICE_SET", "reset " +i++);
}
}
}
通过blpop获取队列消息
package com.muyunfei.redis;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class Redis_blpop {
private static JedisPool jedisPool = null;
public static void main(String[] args) {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(30);// 最大闲置个数
jedisPoolConfig.setMinIdle(10);// 最小闲置个数
jedisPoolConfig.setMaxTotal(30);// 最大连接数
jedisPoolConfig.setTestOnBorrow(true); //进行有效性检查
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(30000); //多长时间检查一次连接池中空闲的连接(ms)
jedisPoolConfig.setMinEvictableIdleTimeMillis(30000); //空闲连接多长时间后会被收回 (ms)
jedisPoolConfig.setTestOnReturn(true);
jedisPoolConfig.setNumTestsPerEvictionRun(-1);
jedisPool = new JedisPool(jedisPoolConfig,"172.20.184.218",6379);
executeThread_1();
executeThread_2();
}
//第一个线程
private static void executeThread_1(){
// 单独创建一个线程
Thread newThread;
try {
Runnable ree = new Runnable() {
@Override
public void run() {
Jedis jedis = jedisPool.getResource();
while(true){
//2000表示单位是秒,如果设置为0,blpop会一直等待新消息
//设置时间后,超过2000秒,没有数据也自动释放本地blpop
List<String> list = jedis.blpop(2000,"HAIYI_DATA_ACQUISITION_SERVICE_SET");
System.out.print("111111111:");
for(String temp:list){
System.out.print(":"+temp);
}
System.out.println("");
}
}
};
newThread = new Thread(ree);
// 开启线程
newThread.start();
}catch(Exception e){
e.printStackTrace();
}
}
//第二个线程
private static void executeThread_2(){
// 单独创建一个线程
Thread newThread;
try {
Runnable ree = new Runnable() {
@Override
public void run() {
Jedis jedis = jedisPool.getResource();
while(true){
List<String> list = jedis.blpop(2000,"HAIYI_DATA_ACQUISITION_SERVICE_SET");
System.out.print("22222:");
for(String temp:list){
System.out.print(":"+temp);
}
System.out.println("");
}
}
};
newThread = new Thread(ree);
// 开启线程
newThread.start();
}catch(Exception e){
e.printStackTrace();
}
}
}