2014-04-06 2 views
5

Мне интересно, какие преимущества Redis с его клиентом C# над Dictionary/ConcurrentDictionary и в противном случае.Преимущества Redis over C# Dictionary

Я не уверен, что при использовании redis считается излишним для хранения словаря.

Спасибо.

+0

1/Почему бы вам не узнать, пытаясь? 2/Такой общий вопрос, вероятно, больше подходит для http://programmers.stackexchange.com/. – Aybe

+0

Я хочу узнать, как использовать redis и каковы его преимущества перед обычным в объекте памяти C#, его не означает, что он будет сражаться на одном бар между этими двумя. –

+0

Да, но вы знаете, как эти вопросы возникают в SO: субъективный ответ, так что либо у вас есть точный вопрос, чтобы спросить, либо вы не получите никакого ответа, или он будет закрыт. – Aybe

ответ

6

Redis, вероятно, является излишеством для локального приложения с одной машиной. Особенно, если данные невелики.

В основном используется в качестве уровня кэша L2. Скажем, у вас есть несколько машин, обслуживающих ваше приложение, каждая машина может хранить свой собственный локальный кеш, но Redis может служить глобальным кешем для всех. Предположим, что пользователь вашего приложения просматривает страницу или функцию, требующую некоторых данных из вашей базы данных. Затем ваше приложение проверит локальный кеш L1 (например, словарь). Это был бы самый быстрый метод, так как он не связан ни с какой другой сетевой поездкой. Если данных нет, он будет искать его в Redis в качестве глобального кэша приложений. Если он есть - отлично - извлеките данные и вставьте их в локальный кеш L1. Если нет, перейдите в базу данных, извлеките данные, поместите их в Redis (L2) и в локальный кеш (L1).

Подробнее об этом можно узнать здесь here.

Это, как говорится, есть больше обыкновений для Redis, кроме простого кэша - Pub/Sub функциональности, SET сек, SORTED SET сек и функциональность на них (как перекрестки, союзы и т.д.) и даже смарт-функциональность на STRING типов, например как побитовые операции.

+0

@ Авиран Коэн, помог ли мой ответ? –

2

Как вы уже знаете, используя Redis для кэширования в сервере, вы бы перехитрили.

Но используя Redis с C# в распределенном приложении определенно предлагает некоторые преимущества (все из перечисленных ниже операций потокобезопасны):

  1. Вы можете создать собственный ORM оболочку для вашего проекта в C# таких что ваши объекты .NET с одного сервера могут быть легко доступны из другого. Вы можете кэшировать объекты Dictionary в хэшах Redis, List объектов в списках Redis, HashSet объектов в Redis и т.д. Если ваши значения являются строками/ints/float, нет необходимости даже сериализовать!
  2. Публикация/Подписка на/из нескольких серверов/потоков.
  3. Справочные службы/планировщики C# могут воспользоваться задачами или объектами в списках Redis и получить триггеры событий, используя API blPop Redis.
  4. Поддержание «10 лучших», «нижних 10» предметов и т. Д., С использованием sorted set с Redis.

Но в конце концов все зависит от вашего прецедента.

Смежные вопросы