Redis, distribuído ou não?

Quanto à primeira questão: Eu sei que Redis carrega todos os dados na memória, melhorando assim a velocidade de leitura / escrita. Então, isso significa que se meu tamanho de memória é 2G, o tamanho máximo do conjunto de dados não deve ser maior que 2G? Agora meu banco de dados tem um 100g + de dados, a memória do meu servidor não pode ser maior que 32G, então, Redis não é mais adequado para mim?

Quanto à segunda questão: Redis é um sistema distribuído ou não? Quando eu uso o google para procurar a propriedade CAP do redis, ele diz que o Redis não é um sistema distribuído, então, ele não tem nada a ver com CAP . Mas da Wikipedia, diz que tem uma arquitetura mestre-escravo, um mestre com muitos escravos. Que confuso.

Author: dorafmon, 2013-08-22

1 answers

Quanto à Pergunta 1, o Redis é um armazém de memória com algumas capacidades de persistência. Todo o seu conjunto de dados deve caber na memória. Uma única instância é, portanto, limitada pela memória máxima do seu servidor. Agora, você também pode cortar os dados para várias instâncias Redis, executando em vários servidores. Desde que você tenha o orçamento para ele, é perfeitamente possível armazenar 100GB - 1TB de dados em um conjunto de caixas Redis. Por favor, note que o sharding não é automático: tem de ser implementado pelo cliente ou a aplicação. Ele também coloca algumas restrições nas operações que você pode fazer em seus dados (por exemplo, não seria possível no lado do servidor calcular as interseções de dois conjuntos hospedados por diferentes instâncias Redis). Quanto à segunda questão, uma única instância Redis não é um sistema distribuído. É uma loja centralizada remota. Agora, usando várias instâncias Redis, você pode construir um sistema distribuído. Porque é uma abordagem do-it-yourself, você pode decidir torná-lo um CP ou AP sistema.

Uma única instância pode replicar a sua actividade a instâncias de escravos (que são, portanto, eventualmente, consistentes com o mestre). A aplicação pode optar por se conectar sempre com o mestre para ler e escrever. Nesse caso, você pode obter um sistema de CP. Ele também pode escrever no mestre, e ler de todas as instâncias (incluindo escravos), para que você possa obter um sistema AP. Eu disse "pode", porque requer algum trabalho significativo para construir tais sistemas em cima da Redis.

Podes misturar sharding. e replicação mestre / escravo para construir o sistema distribuído que você precisa. No entanto, o Redis só fornece Tijolos básicos para fazer isso. Especialmente, ele oferece muito pouco para lidar com a resiliência e HA (e abordar o P no teorema da CAP). IMO, Redis sentinel por si só não é suficiente para suportar uma configuração HA Redis, uma vez que abrange apenas a gestão de funções. Você precisa complementá-lo com um gerenciador de recursos, e colocar um monte de lógica no cliente/Aplicação. Há uma coisa em andamento. projeto chamado Redis Cluster , cujo objetivo é fornecer um sistema distribuído minimalista pronto a usar, mas ainda falta de muitas coisas, e ainda não é utilizável para fins de produção.

Se você precisa de uma loja distribuída fora da prateleira, Redis provavelmente não é uma boa opção. Você será melhor servido por Cassandra, Riak, MongoDB, Couchbase, Aerospike, MySQL Cluster, Oracle NoSQL, etc ... No entanto, se você quiser construir o seu próprio sistema especializado, Redis é um excelente componente para construir.

 40
Author: Didier Spezia, 2013-08-22 18:35:58