在如今并發的環境下,對大資料量的查詢采用緩存是最好不過的了,本文使用redis搭建叢集
(個人喜歡redis,對memcache不感冒)
redis是3.0後增加的叢集功能,非常強大
叢集中應該至少有三個節點,每個節點有一備份節點。這樣算下來至少需要6台伺服器
考慮到有些朋友的電腦組態不是很高,跑多個虛拟機就會卡,這邊放出僞分布式和分布式
(2年前的配置)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL5gjNxIDM4gzMtEjNzUDM3QDMwgjM0AjNxAjMtYTO0EDN48CX0AjNxAjMvwlN5QTM0gzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
前提先裝好一個單例情況下的redis(這裡就不多說了)
需要6個redis執行個體
搭建叢集的步驟:
在/usr/local下 建立檔案夾
進入redis01/bin
删除dump檔案
複制多份
(真實環境下隻需要一個就行,然後其餘5台機子重複以上操作)
指定端口從7001到7006
這是真實環境下的
第四步:把redis-trib.rb檔案複制到到redis-cluster目錄下。
(真實環境下,隻需要放在你某個節點機子上就行,他會自動周遊到其他的節點上的,我做的時候放在了01上)
執行ruby腳本之前,需要安裝ruby環境,不然裝不了
yum install ruby
安裝redis-trib.rb運作依賴的ruby的包
這個gem可以網上下載下傳,很多
使用redis-trib.rb建立叢集
不管是不是僞分布式,這隻需要啟動一次
成功~!
連結第一個節點
下面示範使用jedis來讀寫緩存
當然加入spring中一定要使用單例
1 @Test
2 public void testCluster() throws Exception {
3 Set<HostAndPort> nodes = new HashSet<>();
4 nodes.add(new HostAndPort("192.168.1.193", 7001));
5 nodes.add(new HostAndPort("192.168.1.194", 7002));
6 nodes.add(new HostAndPort("192.168.1.195", 7003));
7 nodes.add(new HostAndPort("192.168.1.196", 7004));
8 nodes.add(new HostAndPort("192.168.1.197", 7005));
9 nodes.add(new HostAndPort("192.168.1.198", 7006));
10 JedisCluster jedisCluster = new JedisCluster(nodes);
11 jedisCluster.set("name", "lee");
12 jedisCluster.set("age", "18");
13 String name = jedisCluster.get("name");
14 String value = jedisCluster.get("age");
15 System.out.println(name);
16 System.out.println(value);
17 jedisCluster.close();
18 }
運作結果:
可以看到redis用戶端上取資料的時候IP是不一樣的
官網itzixi.com
微信公衆号:BeJavaGod
新浪微網誌
知乎
簡書
cnblogs
今日頭條
豆瓣
--> 同步更新