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类型的智能功能,例如按位操作.
如您所知,使用 Redis 进行服务器内缓存是一种矫枉过正。
但是在分布式应用程序中使用 Redis 和 C#肯定会提供一些好处(以下所有操作都是线程安全的):
DictionaryRedis 哈希中的List对象、Redis 列表中的HashSet对象、Redis 集合中的对象等。如果您的值是字符串/整数/浮点数,则甚至不需要序列化!sorted sets维护“前 10 名”、“后 10 名”项目等。但归根结底,这一切都取决于您的用例。