redis数据库把它分散到两台机器
阿神
阿神 2017-04-21 10:57:02
0
6
686

我有一个4G的redis数据库,现在已经存在,我想要把它分散到两台机器,一台机器2G,该怎么做?

看了一下redis cluster,都是讲单点失败,主从复制,这个不是我的需求。

sf的redis服务器是多大的内存?

阿神
阿神

闭关修行中......

모든 응답(6)
大家讲道理

어떤 클라이언트를 사용하고 있는지 잘 모르겠습니다. 클라이언트마다 가장 기본적인 분산 구현이 있지만 이는 클라이언트 구현입니다. 노드를 추가하고 삭제할 때 해시를 다시 계산하고 데이터를 직접 마이그레이션해야 합니다. Redis 3에는 서버 지원이 포함되어 훨씬 간단해집니다.

기본적으로 현재 클라이언트 구현은 @TechAd가 말한 대로 일관된 해싱을 기반으로 합니다. 예를 들어 Redis::Distributed는 Ruby 클라이언트에서 사용할 수 있으며 필요에 따라 4G 데이터를 두 대의 시스템으로 분할하는 것도 매우 간단합니다. https는 이미 사용 가능합니다(://github.com/yankov/redis-migra...). 실제로 구현을 살펴보겠습니다.

도움이 되었기를 바랍니다.

巴扎黑

일관된 해싱과 관련된 알고리즘을 검색하는 것이 좋습니다. 일반적인 아이디어는 클라이언트에서 경로를 만들고 키에 대한 해시를 만든 다음 mod 2에서 키 값을 각각 0과 1로 저장하는 것입니다. 두 대의 컴퓨터에서 읽을 때도 마찬가지입니다. Memcache를 참고하시면 됩니다. http://blogread.cn/it/article/5271

참조링크를 알려드리겠습니다.
大家讲道理

3L 접근 방식을 사용할 수도 있고, 가장 직접적인 방법은 비즈니스 계층에서 데이터를 분리하여 구성에 쓰는 것입니다. 이는 나중에 분할할 때 매우 편리하며 논리도 간단합니다. 분산형이므로 mongoDB를 사용하는 것이 좋습니다

PHPzhong

pepline이 필요하지 않은 경우 https://github.com/twitter/twemproxy Twitter 종료 프록시, 자동 해싱, 자동 장애 조치를 사용하는 것이 좋습니다

刘奇

질문해 보세요. twemproxy는 자동 활성/대기 전환을 지원하지 않나요?

巴扎黑

이는 Redis 클러스터를 사용하여 Redis 클러스터를 사용하고 있습니다.
기존 데이터 세트가 N개의 마스터로 분할되어 있다고 가정하고(기존 샤딩이 없는 경우 N=1), 데이터 세트를 Redis 클러스터로 마이그레이션하려면 다음 단계가 필요합니다.
고객을 중지하십시오. 현재 Redis 클러스터로의 자동 실시간 마이그레이션은 불가능합니다. 귀하의 애플리케이션/환경에 맞게 실시간 마이그레이션을 조율할 수도 있습니다.
BGREWRITEAOF 명령을 사용하여 모든 N 마스터에 대한 추가 전용 파일을 생성하고 AOF 파일이 완전히 생성될 때까지 기다립니다.
AOF 파일을 aof-1에서 aof-N 어딘가에 저장하세요. 이 시점에서 원하는 경우 이전 인스턴스를 중지할 수 있습니다(가상화되지 않은 배포에서는 동일한 컴퓨터를 재사용해야 하는 경우가 많기 때문에 유용합니다).
N개의 마스터와 0개의 슬레이브로 구성된 Redis 클러스터를 생성합니다. 나중에 노예를 추가하게 됩니다. 모든 노드가 지속성을 위해 추가 전용 파일을 사용하고 있는지 확인하세요.
모든 클러스터 노드를 중지하고 해당 추가 전용 파일을 기존 추가 전용 파일로 대체합니다(첫 번째 노드는 aof-1, 두 번째 노드는 aof-2, 최대 aof-N).
새 AOF 파일을 사용하여 Redis 클러스터 노드를 다시 시작합니다. 그들은 구성에 따라 존재해서는 안 되는 키가 있다고 불평할 것입니다.
각 노드의 권한이 있는 해시 슬롯에 따라 키가 마이그레이션되도록 클러스터를 수정하려면 redis-trib fix 명령을 사용하세요.
마지막에 redis-trib 검사를 사용하여 클러스터가 괜찮은지 확인하세요.
Redis 클러스터 인식 클라이언트 라이브러리를 사용하도록 수정된 클라이언트를 다시 시작하세요.w

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿