代码之家  ›  专栏  ›  技术社区  ›  Mhmd

使用ASP.Net Core 2.0c在MongoDB中插入实时数据#

  •  0
  • Mhmd  · 技术社区  · 7 年前

    第二种方法是收集数据,并使用计时器每隔1秒插入许多数据。 第一种方法太慢,但第二种方法更好更快,与数据库的连接数更少。 这是我开发的代码的一部分:

    _timer.Stop();
                System.Threading.Monitor.Enter(_lockObject);
                try
                {
                    Task t1 = Task.FromResult(0);
                    Task t2 = Task.FromResult(0);
                    Task t3 = Task.FromResult(0);
    
                    if (Data1.Count > 0)
                    {
                        t1 = Collection1.InsertManyAsync(Data1);
                    }
                    if (Data2.Count > 0)
                    {
                        t2 = Collection2.InsertManyAsync(Data2);
                    }
                    if (Data3.Count > 0)
                    {
                        t3 = Collection3.InsertManyAsync(Data3);
                    }               
    
                    Task.WhenAll(t1, t2, t3);
    
                }
                catch (Exception)
                {
                }
                finally
                {
                    Data1.Clear();
                    Data2.Clear();
                    Data3.Clear();
                    System.Threading.Monitor.Exit(_lockObject);
                    _timer.Start();
                }
    

    我的问题是,如果我想收集请求并将其作为包含1000个项目的列表插入,我如何才能在不丢失实时数据的情况下做到这一点。我知道在插入数据库时需要锁定我的列表,但在那个时候,我将丢失实时数据,因为我的列表被锁定了?

    0 回复  |  直到 7 年前