詳細情報のJava のビルドRedisの詳細はクラスタ- 拡張性と高可用性のために。[優れた]から学ぶためにこの共有シャープレッスン。
何がRedisののクラスタは?
スケーラビリティと可用性が最も重要な品質のいずれかのエンタープライズレベルのデータベースの2つです。
あなたは正確にそのため、異常に高い需要期間に応じて、スケーラブルにする必要があり、非常に異例のことだデータベースが消費するリソースの最大量を、予測することができます。しかし、スケーラビリティ状況の可用性が存在しない場合にそれが必要なときに、ユーザーが常にデータベース内の情報へのアクセス権を持っていることを保証する、無用です。
Redisのは、キーは、非リレーショナル・データベースを実装するために使用することができる、メモリに格納されたデータ構造です。しかし、Redisのベアボーンインストールはすぐに最高のパフォーマンスを提供していません。
改善するためにRedisののスケーラビリティと可用性の展開を、あなたは使用することができますRedisのにクラスタ異なり、Redisののノード間で自動的にスライスされたデータのための方法を。クラスタRedisの偉大なRedisのの小さな水平パーティションにデータベースは、スライスと呼ばれるこれらのパーティションは、別のサーバに保存されています。
これは作るのRedisのデータベースは、したがって、より高いスケーラビリティを持つ、より多くの要求に対応します。また、クラスタ内のノードの一部が故障しても、データベースは実行し続けることができるので、可用性を向上させることができます。
で3.0 バージョンの前に、Redisのクラスタは、非同期レプリケーションを使用しました。場合実際には、この手段があることRedisのクラスタマスターサーバは、サーバから送信されたすべての書き込み操作の前にクラッシュしたために、あなたは、書き込み動作の損失につながる機器を、アップグレードするプライマリサーバからの書き込み操作を受け取ることができません。
3.0 最初のバージョン、Redisのクラスタはまた、持っているWAITのこれまでのすべての書き込みコマンドが正常に完了するまで、現在のクライアントを防ぐ同期レプリケーションオプションの形でコマンドを。が、これは強い一貫性を保証するには十分ではありませんが、それは、データ送信プロセスをより安全にするん。
実行方法のRedisのクラスタを
起動して実行するには2つの方法がありますRedisのクラスタ簡単な方法と難しい方法は:。
方法は簡単なのを使用する必要create-cluster
のbash スクリプトを、次のことができRedisのインストールutils/create-cluster
スクリプトディレクトリを検索します。次の2つのコマンドを作成する必要があります6 -node、3 マスターノードと3 デフォルトのクラスタノードからのGeを:
作成クラスターを開始
クラスタを作成する作成します
クラスタを作成した後、あなたはそれと対話することができます。デフォルトでは、ポートからのクラスタの最初のノード30001が開始します。次のコマンドを使用してクラスタを停止します。
作成クラスタを停止
运行Redis Cluster的困难方法包括为集群设置自己的配置文件。Redis Cluster的所有实例必须至少包含三个主节点。
以下是单个节点的示例配置文件:
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
顾名思义,启用集群的选项启用集群模式。cluster-config-file
选项包含给定节点的配置文件路径。
要创建具有三个主节点和三个从节点的测试Redis群集实例,请在终端中执行以下命令:
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
在这六个目录中的每个目录中,使用上面给出的示例配置文件创建redis.conf配置文件。然后,将你的redis-server可执行文件复制到cluster-test目录中,并使用它在终端的六个不同选项卡中启动六个不同的节点。
在Java上连接到Redis集群
与基本的Redis安装一样,Redis Cluster无法立即使用Java编程语言。好消息是,有一些框架使你可以轻松地将Redis Cluster和Java一起使用。
Redisson是Redis的Java客户端,它包括Java中的许多常见构造,包括各种对象,集合,锁和服务。由于Redisson以分布式方式重新实现这些构造,因此它们可以在多个应用程序和服务器之间共享,从而使它们可以与Redis Cluster等工具一起使用。
以下代码演示了Redis集群与Redis集群的用法:
package redis.demo;
import org.redisson.Redisson;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
/**
* Redis Sentinel Java example
*
*/
public class Application
{
public static void main( String[] args )
{
Config config = new Config();
config.useClusterServers()
.addNodeAddress("redis://127.0.0.1:6379", "redis://127.0.0.1:6380");
RedissonClient redisson = Redisson.create(config);
// operations with Redis based Lock
// implements java.util.concurrent.locks.Lock
RLock lock = redisson.getLock("simpleLock");
lock.lock();
try {
// do some actions
} finally {
lock.unlock();
}
// operations with Redis based Map
// implements java.util.concurrent.ConcurrentMap
RMap<String, String> map = redisson.getMap("simpleMap");
map.put("mapKey", "This is a map value");
String mapValue = map.get("mapKey");
System.out.println("stored map value: " + mapValue);
redisson.shutdown();
}
}
Redisson是一个开放源代码客户端,它使Java程序员能够以最小的压力和复杂性来使用Redis,从而极大地简化了开发过程并使之更加熟悉。
谢谢阅读!
更深入的探讨欢迎留言或私信,还可以和你分享更多Java学习资料!
抽丝剥茧 细说架构那些事——【优锐课】