Redis优于c#Dictionary的好处

Avi*_*hen 7 c# dictionary redis concurrentdictionary

我想知道Redis的C#客户端比Dictionary/ConcurrentDictionary有什么好处.

我不确定何时使用redis被认为是字典存储的过度杀伤.

谢谢.

Ofe*_*lig 12

对于本地的单机应用来说,Redis可能是一种过度杀伤力.特别是当数据不大时.

它主要用作L2缓存层.假设您有多台机器为您的应用程序提供服务,每台机器都可以拥有自己的本地缓存,但Redis可以作为所有机器的全局缓存.假设您的应用的用户浏览到需要来自后端数据库的某些数据的页面或功能.然后,您的应用将检查其本地L1缓存(例如字典).这将是最快的方法,因为它不涉及任何网络往返.如果数据不存在,它将在Redis中将其作为全局应用缓存进行查找.如果它在那里 - 很棒 - 获取数据并放入本地L1缓存中.如果没有,请转到数据库,获取数据,将其放入Redis(L2)和本地缓存(L1)中.

你可以在这里阅读更多内容.

话虽如此,除了缓存之外,还有更多的Redis用法 - Pub/Sub功能,SETs,SORTED SETs和功能(如交叉点,工会等)甚至是STRING类型的智能功能,例如按位操作.


Man*_*ath 5

如您所知,使用 Redis 进行服务器内缓存是一种矫枉过正。

但是在分布式应用程序中使用 Redis 和 C#肯定会提供一些好处(以下所有操作都是线程安全的):

  1. 您可以在 C# 中为您的项目构建自定义 ORM 包装器,以便可以从另一台服务器无缝访问来自一台服务器的 .NET 对象。您可以缓存DictionaryRedis 哈希中的List对象、Redis 列表中的HashSet对象、Redis 集合中的对象等。如果您的值是字符串/整数/浮点数,则甚至不需要序列化
  2. 向/从多个服务器/线程发布/订阅。
  3. C# 后台服务/调度程序可以受益于维护 Redis 列表中的任务或对象,并使用 Redis 的blPop API获取事件触发器。
  4. 使用 Redis 的sorted sets维护“前 10 名”、“后 10 名”项目等。

但归根结底,这一切都取决于您的用例。