C# 在数据库或内存中维护集合(如果集合可能很小)

C# 在数据库或内存中维护集合(如果集合可能很小),c#,asp.net,performance,C#,Asp.net,Performance,我有以下课程: public class MatchMaker : Hub { private readonly ISoloUserRepository soloUsers; public MatchMaker(ISoloUserRepository userRepo) { this.soloUsers = userRepo; } //Client Requests

我有以下课程:

public class MatchMaker : Hub
    {

        private readonly ISoloUserRepository soloUsers;
        public MatchMaker(ISoloUserRepository userRepo)
        {
            this.soloUsers = userRepo;
        }
         //Client Requests
        public void findNewPartner(string Name, string Country)
        {

            SoloUser soloUser = soloUsers.Users.FirstOrDefault(s => (s.Name == Name) && (s.Country == Major));
            if (soloUsers.Users.Count > 0){
                Clients.partnerRequestResult(soloUsers.Users.FirstOrDefault());
                soloUsers.Users.Remove(soloUser);
            }
            else
            {
                soloUser = new SoloUser { 
                    Name = Name,
                    Country = Country                       
                };
                soloUsers.Users.Add(soloUser);
            }



        }
    }

我希望能够将我的
soloUsers
对象保存在内存中,因此每当访问此类时,它都会跟踪添加到
soloUsers
存储库中的
SoloUser
对象。我还没有完全建立起我的
solouserepositional
类,所以我想知道处理这个问题的最佳方法。在这种意义上,我是否必须使用数据库来维护添加到集合中的
SoloUser
,或者是否有方法将此集合存储在内存中?请记住,用户不断地被添加和删除。

我想说的是,不管收集的数量是大是小。这取决于其他因素,例如:

  • 如果进程关闭,是否要求收集保持?如果没有-内存将正常;如果您只丢失了一些数据是可以的,那么可以不时地将内存与持久性存储同步;否则-使用(不一定是数据库)存储

  • 有多少线程将访问您的集合?这是web/cs应用程序的后端,对吗?如果是这样,那么您将需要一些锁和事件来同步访问。关系数据库通常可以为您处理这些问题

  • 如果您确定,该集合将保持较小的内存空间。如果它长大了怎么办?将进程的一部分移动到其他服务器或将持久性存储移动到其他服务器会更容易吗?你的日常活动是否足够快