# 下載原始碼 wget https://download.redis.io/releases/redis-3.0.7.tar.gz tar -zxf redis-3.0.7.tar.gz # 編譯安裝至指定目錄 cd redis-3.0.7 make PREFIX=/usr/local/redis install
cp redis.conf /usr/local/redis/bin/redis.conf:
daemonize yes:啟用後台運行port 6379:預設埠號,可自訂# 啟動 ./redis-server redis.conf # 驗證 ps -ef | grep redis redis-cli ping # 回傳 PONG 表示正常
// Maven 依賴
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.0</version>
</dependency>
// 單機直連
Jedis jedis = new Jedis("192.168.198.130", 6379);
jedis.set("test", "value");
String val = jedis.get("test");
jedis.close();
// 連接池模式(生產推薦)
JedisPool pool = new JedisPool("192.168.198.130", 6379);
Jedis jedis = pool.getResource();
// ...操作...
jedis.close(); // 歸還連接
pool.close();
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="30"/>
<property name="maxIdle" value="10"/>
<property name="maxWaitMillis" value="1500"/>
<property name="testOnBorrow" value="true"/>
<property name="testWhileIdle" value="true"/>
</bean>
<bean id="redisClient" class="redis.clients.jedis.JedisPool">
<constructor-arg name="host" value="${JEDIS_HOST}"/>
<constructor-arg name="port" value="6379"/>
<constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
</bean>
<bean id="redisClientDao" class="com.taotao.rest.dao.impl.JedisClientSingle"/>
# 安裝 Ruby 環境(redis-trib.rb 依賴) yum install ruby rubygems gem install /usr/local/redis-3.0.0.gem
| 角色 | IP:Port | 目錄 |
|---|---|---|
| Master | 192.168.198.130:7001~7003 | /usr/local/redis-cluster/7001~7003 |
| Slave | 192.168.198.130:7004~7006 | /usr/local/redis-cluster/7004~7006 |
各節點複製 redis.conf 並修改 port、啟用 cluster-enabled yes、設定 cluster-config-file nodes.conf。
# 啟動 6 個實例 for port in 7001 7002 7003 7004 7005 7006; do cd /usr/local/redis-cluster/$port && ./redis-server redis.conf done # 建立叢集(1 主 1 從) cp /usr/soft/redis-3.0.7/src/redis-trib.rb /usr/local/redis-cluster/ ./redis-trib.rb create --replicas 1 \ 192.168.198.130:7001 192.168.198.130:7002 192.168.198.130:7003 \ 192.168.198.130:7004 192.168.198.130:7005 192.168.198.130:7006
./redis-trib.rb add-node 192.168.198.130:7007 192.168.198.130:7001./redis-trib.rb reshard 192.168.198.130:7001 → 依提示輸入槽數、目標節點 ID、來源節點./redis-trib.rb add-node --slave --master-id <master_id> 192.168.198.130:7008 192.168.198.130:7001./redis-trib.rb del-node 192.168.198.130:7008 <node_id>(需先遷移槽位)// Java 直連
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.198.130", 7001));
// ...加入所有節點...
JedisCluster cluster = new JedisCluster(nodes);
cluster.set("key", "value");
cluster.close();
// Spring 配置
<bean id="redisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="nodes">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg value="192.168.198.130"/>
<constructor-arg value="7001"/>
</bean>
<!-- 其他 5 節點 -->
</set>
</constructor-arg>
<constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
</bean>
分別實作 JedisClientSingle(單機)與 JedisClientCluster(叢集)介面,注入 JedisPool 或 JedisCluster,統一對外暴露 get/set/hget/hset/incr/expire/ttl/del/hdel 等方法。注意叢集模式下不可調用 close(),否則後續無法連線。