我想知道Redis及其C#客户端相比于Dictionary/ConcurrentDictionary的优势在哪里,以及何时使用Redis被认为是过度设计。
谢谢。
谢谢。
Redis可能对于本地、单机应用程序来说会有些过度。特别是当数据不是很大的时候。
它主要用作L2缓存层。比如说,如果你有多台机器为你的应用程序提供服务,每台机器可以持有自己的本地缓存,并且Redis可以作为所有机器的全局缓存。
假设你的应用程序的用户浏览到需要从后端数据库获取一些数据的页面或功能。你的应用程序将会检查它的本地L1缓存(例如字典)。这将是最快的方法,因为它不涉及任何网络往返。如果数据不存在,则会在Redis中查找全局应用程序缓存。如果存在-那太好了-获取数据并将其放入本地L1缓存中。如果没有,就去数据库中获取数据,将其放入Redis(L2)和本地缓存(L1)中。
您可以在这里阅读更多关于此的内容。
话虽如此,Redis除了作为缓存之外还有更多的用途-发布/订阅功能,SET
,SORTED SET
以及它们上面的功能(如交集,联合等),甚至是针对STRING
类型的智能功能,如位运算。
Dictionary
对象缓存在Redis哈希中,您的List
对象在Redis列表中,您的HashSet
对象在Redis集合等中。如果您的值是字符串/整数/浮点数,则无需序列化!sorted set
维护“前10个”、“底部10个”项目等。