做了乙個測試,redis佇列,在2000個執行緒同時併發處理四萬個簡單訊息時,推入佇列會報錯;
redis.clients.jedis.exceptions.jedisconnectionexception: could not get a resource from the pool
從佇列裡面拿訊息時,完全沒問題,不報錯;(可能是訊息內容比較簡單)
如果訊息檢入或者檢出出錯,做setnx鎖,會嚴重限制速度;應該有容錯錯失,比如把異常的訊息重新放入緩衝中,再進行一次推入或出列操作
機器的問題,吞吐量
入隊時吞吐量是40000/66338 s 大概也有每秒六七千;
出隊時吞吐量是40000/65047 s 多次嘗試,大概比入隊慢那麼幾秒
如果執行緒數》2000個,可能吞吐量更大;我想應該超過10000/s;
**jedispoolconfig config = new jedispoolconfig();
config.setmaxactive(5000);
config.setmaxwait(1000*10);
config.setmaxidle(300);
config.settestonborrow(true);
public static void main(string args) throws piredi***ecption, interruptedexception
new thread() catch (interruptedexception e1)
for(int a=0;a<200;a++) catch (piredi***ecption e)
}system.out.println("-------------------");
latch2.countdown();
}}.start();
latch.countdown();
}latch2.await();
system.out.println("*****==="+(system.currenttimemillis()-start));
system.out.println(redismanager.getinstance().len("a"));
// for(int a = 0;a// }
}
redis 佇列 redis 延時佇列
定時發公告 使用者下單30分鐘後未付款自動關閉訂單 使用者下單後延時簡訊提醒 延時關閉空閒客戶端連線 使用redis提供的有序資料結構zset,把過期時間戳作為score。public void produce string topic,string msg,date date 生產訊息 於 消費 ...
基於Redis的訊息佇列封裝和測試
created by phpstorm.user huyanping date 14 8 19 time 下午12 10 基於redis的訊息佇列封裝 class redismessagequeue else 析構函式,關閉redis鏈結,使用長連線時,最好主動呼叫關閉 public functio...
Redis訊息佇列
redis的訊息佇列使用簡單,沒有什麼配置,比activemq要輕量級太多,當然功能也比較簡單,如果只需要簡單的訂閱以及發布,可以考慮使用它。訂閱操作 命令為 subscribe channel channel 如 1 所示,即成功訂閱頻道 redis.blog 發布操作 命令為publish ch...