Redis 相对于 c# 字典的优势
本文关键字:字典 相对于 Redis | 更新日期: 2023-09-27 17:56:54
我想知道 Redis 及其 C# 客户端相对于 Dictionary/ConcurrentDictionary 和其他有什么好处。
我不确定何时使用 redis 被认为是字典存储的矫枉过正。
谢谢。
Redis 对于本地单机应用程序来说可能是一种矫枉过正。 特别是当数据不大时。
它主要用作二级缓存层。假设您有多台计算机为您的应用程序提供服务,每台计算机都可以保存自己的本地缓存,Redis 可以充当所有计算机的全局缓存。
假设应用的用户浏览到需要后端数据库中的某些数据的页面或功能。然后,你的应用将检查其本地 L1 缓存(例如字典)。这将是最快的方法,因为它不涉及任何网络往返。如果数据不存在,它将在 Redis 中查找它作为全局应用程序缓存。如果它在那里 - 很好 - 获取数据并放入本地 L1 缓存中。如果没有,请转到数据库,获取数据,将其放入 Redis (L2) 和本地缓存 (L1) 中。
您可以在此处阅读更多内容。
也就是说,除了缓存之外,Redis 还有更多用途 - 发布/订阅功能、SET
s、SORTED SET
及其上的功能(如交集、联合等),甚至是STRING
类型的智能功能,例如按位运算。
如您所知,使用 Redis 进行服务器内缓存是一种矫枉过正。
但是在分布式应用程序中将 Redis 与 C# 结合使用肯定会带来一些好处(以下所有操作都是线程安全的):
- 可以在 C# 中为项目生成自定义 ORM 包装器,以便可以从一台服务器无缝访问另一台服务器的 .NET 对象。您可以将
Dictionary
对象缓存在 Redis 哈希中,List
对象缓存在 Redis 列表中,将HashSet
对象缓存在 Redis 集中等。 如果你的值是字符串/整数/浮点数,甚至不需要序列化!
发布/订阅到多个服务器/线程/ - 从多个服务器/线程。
- C# 后台服务/调度程序可以从维护 Redis 列表中的任务或对象中受益,并使用 Redis 的 blPop API 获取事件触发器。
- 使用 Redis 的
sorted set
维护"前 10 名"、"后 10 名"项目等。
但归根结底,这一切都取决于您的用例。