ฉันมีปัญหากับ StackExchange.Redis ในกระบวนการของเรา เรามีฐานข้อมูล Redis สองฐานข้อมูล ฐานข้อมูลเหล่านี้ใช้เพื่อจัดเก็บข้อมูลที่คล้ายกันซึ่งผู้ใช้สามารถดำเนินการค้นหาได้ ดังนั้นเราจึงสลับระหว่างข้อมูลเหล่านี้ในการนำเข้า เพื่อให้ผู้ใช้สามารถเข้าถึงข้อมูลได้อย่างต่อเนื่อง ในแต่ละวัน มีการแทรกบันทึกประมาณ 50000000 รายการในฐานข้อมูลหนึ่ง และบันทึกเก่าจะถูกลบออกจากอีกฐานข้อมูลหนึ่ง เพื่อเตรียมสำหรับการนำเข้าในวันถัดไป บันทึกจะถูกนำเข้าเป็นชุดจำนวน 100,000 รายการ ปัญหาที่เรากำลังเผชิญคือหลังจากการนำเข้าข้อมูลเสร็จสิ้น Redis จะส่งข้อยกเว้นขณะพยายามดำเนินการคำสั่ง flushdb
StackExchange.Redis.RedisTimeoutException Timeout awaiting response (outbound=0KiB, inbound=0KiB, 5976ms elapsed, timeout is 5000ms), command=UNKNOWN, next: SELECT, inst: 0, qu: 0, qs: 2, aw: False, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, serverEndpoint: 127.0.0.1:6379, mgr: 10 of 10 available, clientName: MX-ENUM-VM, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=3,Free=32764,Min=2,Max=32767), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts) at Project.Synchronizer.Service.RedisHelper.FlushDb(Int32 dbIndex)
at Project.Synchronizer.Service.RedisHelper.SelectAndClearRedisDbForNumberUpload()
at Project.Synchronizer.Service.RedisHelper.UploadNumbers()
at Project.Synchronizer.Service.DataUploadService.UploadNumbersToRedis() StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=0KiB, 5976ms elapsed, timeout is 5000ms), command=UNKNOWN, next: SELECT, inst: 0, qu: 0, qs: 2, aw: False, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, serverEndpoint: 127.0.0.1:6379, mgr: 10 of 10 available, clientName: CLIENT-ENUM-VM, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=3,Free=32764,Min=2,Max=32767), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)
at Project.Synchronizer.Service.RedisHelper.FlushDb(Int32 dbIndex)
at Project.Synchronizer.Service.RedisHelper.SelectAndClearRedisDbForNumberUpload()
at Project.Synchronizer.Service.RedisHelper.UploadNumbers()
at Project.Synchronizer.Service.DataUploadService.UploadNumbersToRedis()
วิธีที่ฉันพยายามรันคำสั่งนี้คือ
private async Task FlushDb(int dbIndex)
{
await getDB(dbIndex).ExecuteAsync("flushdb");
}
ความช่วยเหลือใดๆ จะได้รับการชื่นชมอย่างมาก เนื่องจากฉันติดอยู่กับเรื่องนี้มาระยะหนึ่งแล้ว สำหรับบันทึกนี้ ฉันพยายามหาคำตอบที่นี่ แต่ไม่เข้าใจอะไรเลย https://stackexchange.github.io/StackExchange.Redis/Timeouts.html