Redis 相对于 c# 字典的优势

本文关键字:字典 相对于 Redis | 更新日期: 2023-09-27 17:56:54

我想知道 Redis 及其 C# 客户端相对于 Dictionary/ConcurrentDictionary 和其他有什么好处。

我不确定何时使用 redis 被认为是字典存储的矫枉过正。

谢谢。

Redis 相对于 c# 字典的优势

Redis 对于本地单机应用程序来说可能是一种矫枉过正。 特别是当数据不大时。

它主要用作二级缓存层。假设您有多台计算机为您的应用程序提供服务,每台计算机都可以保存自己的本地缓存,Redis 可以充当所有计算机的全局缓存。

假设应用的用户浏览到需要后端数据库中的某些数据的页面或功能。然后,你的应用将检查其本地 L1 缓存(例如字典)。这将是最快的方法,因为它不涉及任何网络往返。如果数据不存在,它将在 Redis 中查找它作为全局应用程序缓存。如果它在那里 - 很好 - 获取数据并放入本地 L1 缓存中。如果没有,请转到数据库,获取数据,将其放入 Redis (L2) 和本地缓存 (L1) 中。

您可以在此处阅读更多内容。

也就是说,除了缓存之外,Redis 还有更多用途 - 发布/订阅功能、SET s、SORTED SET 及其上的功能(如交集、联合等),甚至是STRING类型的智能功能,例如按位运算。

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

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

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

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