Files
spring-data-examples/redis/cluster/readme.md
Christoph Strobl b82460f33c #158 - Remove workaround for Redis cluster configuration.
SpringBoot 1.4M1 ships with auto configuration for spring.redis.cluster so we removed the work around using ConfigurationProperties.
2016-04-05 17:39:59 +02:00

89 lines
3.3 KiB
Markdown

# Spring Data Redis - Cluster Examples #
This project contains Redis 3 Cluster specific features of Spring Data Redis.
To run the code in this sample a running cluster environment is required. Please refer to the [redis cluster-tutorial](http://redis.io/topics/cluster-tutorial) for detailed information or check the Cluster Setup section below.
## Support for Cluster ##
Cluster Support uses the same building blocks as the non clustered counterpart. We use `application.properties` to point to an initial set of known cluster nodes which will be picked up by the auto configuration.
```properties
spring.redis.cluster.nodes[0]=127.0.0.1:30001
spring.redis.cluster.nodes[1]=127.0.0.1:30002
spring.redis.cluster.nodes[2]=127.0.0.1:30003
```
**INFORMATION:** The tests flush the db of all known instances during the JUnit _setup_ phase to allow inspecting data directly on the cluster nodes after a test is run.
## Cluster Setup ##
To quickly set up a cluster of 6 nodes (3 master | 3 slave) go to the `redis/utils/create-cluster` directory.
```bash
redis/utils/create-cluster $ ./create-cluster start
Starting 30001
Starting 30002
Starting 30003
Starting 30004
Starting 30005
Starting 30006
```
On first initialization cluster nodes need to form the cluster by joining and assigning slot allocations.
**INFO**: This has to be done only once.
```bash
redis/utils/create-cluster $ ./create-cluster create
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:30001
127.0.0.1:30002
127.0.0.1:30003
Adding replica 127.0.0.1:30004 to 127.0.0.1:30001
Adding replica 127.0.0.1:30005 to 127.0.0.1:30002
Adding replica 127.0.0.1:30006 to 127.0.0.1:30003
M: 10696916f57e58c5edce34127b23ca7af1b669a0 127.0.0.1:30001
slots:0-5460 (5461 slots) master
M: 5b0e1b4cc87175326ba79d00ecfc6f5dbdb424a7 127.0.0.1:30002
slots:5461-10922 (5462 slots) master
M: 5f3e978fb40b1d9c910d904ea19a0494b78668aa 127.0.0.1:30003
slots:10923-16383 (5461 slots) master
S: d1717c418d03db93183ce2d791ba6f48be5cf028 127.0.0.1:30004
replicates 10696916f57e58c5edce34127b23ca7af1b669a0
S: c7dfcdb9cd1105e4251de51c4ade54de59bb063c 127.0.0.1:30005
replicates 5b0e1b4cc87175326ba79d00ecfc6f5dbdb424a7
S: 3219785a9145717f30648a27a2dd07359e9dd46f 127.0.0.1:30006
replicates 5f3e978fb40b1d9c910d904ea19a0494b78668aa
Can I set the above configuration? (type 'yes' to accept): yes
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
```
It is now possible to connect to the cluster using the `redis-cli`.
```bash
redis/src $ ./redis-cli -c -p 30001
127.0.0.1:30001> cluster nodes
106969... 127.0.0.1:30001 myself,master - 0 0 1 connected 0-5460
5b0e1b... 127.0.0.1:30002 master - 0 1450765112345 2 connected 5461-10922
5f3e97... 127.0.0.1:30003 master - 0 1450765112345 3 connected 10923-16383
d1717c... 127.0.0.1:30004 slave 106969... 0 1450765112345 4 connected
c7dfcd... 127.0.0.1:30005 slave 5b0e1b... 0 1450765113050 5 connected
321978... 127.0.0.1:30006 slave 5f3e97... 0 1450765113050 6 connected
```
To shutdown the cluster use the `create-cluster stop` command.
```bash
redis/utils/create-cluster $ ./create-cluster stop
```