2014-04-06 3 views
5

사전/ConcurrentDictionary 및 그 밖의 C# 클라이언트에서 Redis의 이점을 궁금합니다.C#을 통한 Redis의 이점 Dictionary

사전 저장을 위해 과도한 사용을 고려하고 있는지 확실하지 않습니다.

감사합니다.

+0

1/시도해 보면 어떨까요? 2/이와 같은 일반적인 질문은 아마도 http://programmers.stackexchange.com/에 더 적합 할 것입니다. – Aybe

+0

나는 redis가 어떻게 사용되어야 하는지를 배우기를 원하고, 메모리 C# 객체에서의 그것의 장점은 무엇인지,이 둘 사이의 하나의 술집에서 싸우는 것을 의미하지 않는다. –

+0

네,하지만 이런 유형의 질문은 결국 주관적 대답으로 끝날 수 있습니다. 따라서 정확한 질문을하거나 대답을 얻지 못하거나 닫히게됩니다. – Aybe

답변

6

Redis는 아마도 로컬 한 대의 컴퓨터 앱에 대한 과잉 공격 일 것입니다. 특히 데이터가 크지 않은 경우.

주로 L2 캐시 계층으로 사용됩니다. 앱을 제공하는 컴퓨터가 여러 대 있다고 가정 할 때 각 컴퓨터는 자체 로컬 캐시를 보유 할 수 있지만 Redis는 모든 컴퓨터에 대한 글로벌 캐시 역할을 할 수 있습니다. 앱 사용자가 백 엔드 데이터베이스의 데이터가 필요한 페이지 나 기능을 탐색한다고 가정 해 보겠습니다. 그러면 앱이 로컬 L1 캐시 (예 : 사전)를 확인합니다. 이는 네트워크 왕복과 관련이 없으므로 가장 빠른 방법입니다. 데이터가 없으면 Redis에서 전역 앱 캐시로 데이터를 찾습니다. 거기에 있다면 - 위대한 - 데이터를 가져와 로컬 L1 캐시에 넣어. 그렇지 않은 경우 데이터베이스로 이동하여 데이터를 가져 와서 Redis (L2) 및 로컬 캐시 (L1)에 저장하십시오.

자세한 내용은 here을 참조하십시오.

말했다되고 있다는 단순한 캐시 이외의 레디 스 더 많은 용도가있다 - 펍/하위 기능, SET의, 그들에 SORTED SET들과 기능은과 STRING 유형에 대한 심지어 스마트 기능 등 (교차로, 노동 조합 등과 같은) 비트 연산으로.

+0

@Aviran Cohen, 내 대답이 도움이 되었습니까? –

2

이미 알고 있듯이 서버 내 캐싱을 위해 Redis를 사용하면 과잉 공격을받을 수 있습니다.

  1. 당신은 C 번호 등을에서 프로젝트에 대한 사용자 정의 ORM 래퍼를 구축 할 수 있습니다 :

    그러나 분산 응용 프로그램에서 C 번호와 레디 스를 사용하여 확실히 몇 가지 혜택 (아래 작업의 모든 스레드 안전) 제공 한 서버의 .NET 객체를 다른 서버에서 원활하게 액세스 할 수 있습니다.개체를 Redis 해시에 캐시 할 수 있고 List 개체를 Redis 목록에 넣고 HashSet 개체를 Redis 집합으로 설정할 수 있습니다. 값이 문자열/ints/float 인 경우을 직렬화 할 필요가 없습니다!

  2. 여러 서버/스레드에 게시/구독.
  3. C# 백그라운드 서비스/스케줄러는 Redis 목록의 작업 또는 개체를 유지 관리하고 Redis의 blPop API를 사용하여 이벤트 트리거를 얻을 수 있습니다.
  4. Redis의 sorted set을 사용하여 'top 10', 'bottom 10'항목 등을 유지 관리하십시오.

하지만 결국에는 모든 경우에 따라 다릅니다.