我想知道 Redis 与它的 C# 客户端相比 Dictionary/ConcurrentDictionary 和其他方面有什么好处。
我不确定何时使用 redis 被认为是字典存储的过度杀伤力。
谢谢。
我想知道 Redis 与它的 C# 客户端相比 Dictionary/ConcurrentDictionary 和其他方面有什么好处。
我不确定何时使用 redis 被认为是字典存储的过度杀伤力。
谢谢。
Redis 对于本地的单机应用程序来说可能是一种过度杀伤力。尤其是数据不大的时候。
它主要用作L2缓存层。假设您有多台机器为您的应用程序提供服务,每台机器都可以拥有自己的本地缓存,而 Redis 可以作为所有机器的全局缓存。
假设您的应用程序的用户浏览到需要后端数据库中的一些数据的页面或功能。然后,您的应用将检查其本地 L1 缓存(例如字典)。这将是最快的方法,因为它不涉及任何网络往返。如果数据不存在,它将在 Redis 中查找它作为全局应用程序缓存。如果它在那里 - 很好 - 获取数据并放入本地 L1 缓存中。如果没有,请转到数据库,获取数据,将其放入 Redis (L2) 和本地缓存 (L1)。
你可以在这里阅读更多内容。
也就是说,除了缓存之外,Redis 还有更多用途——Pub/Sub 功能、SET
s、SORTED SET
s 和它们上的功能(如交集、联合等),甚至还有STRING
类型上的智能功能,如按位运算。
如您所知,使用 Redis 进行服务器内缓存将是一种矫枉过正的做法。
但是在分布式应用程序中使用 Redis 和 C#肯定会带来一些好处(以下所有操作都是线程安全的):
Dictionary
对象缓存在 Redis 哈希中,将List
对象缓存在 Redis 列表中,将HashSet
对象缓存在 Redis 集中等。如果您的值是字符串/整数/浮点数,则甚至不需要序列化!sorted set
s 维护“前 10”、“后 10”项目等。但归根结底,这一切都取决于您的用例。