redis分區技術

來源:互聯網
上載者:User

標籤:clust   並且   list   import   serve   檔案複製   int   har   bug   

需求:

  如果將全部資料都儲存到一台redis中,那麼如果該伺服器損壞,則影響全部的服務;

  使用單台redis記憶體設定一般不要超過1G,但是有些業務資料量很大,如果不修改記憶體,則資料無法儲存;

方案:

  採用redis分區技術;

  優點:

    1.使用redis分區可以實現記憶體資料的動態擴容;

    2.使用分區,每台redis節點中儘可能儲存1/n的資料量,防止資料的丟失;

    3.對於使用者而言,整個redis的分區就是一個服務;n台伺服器作為一個整體的伺服器共同為使用者服務;

1.  分區搭建:

    1.1複製設定檔:建立shards檔案夾,將redis.conf檔案複製到shards檔案中,並且複製3分,改名字,改連接埠號碼;

[[email protected] redis]# ls00-RELEASENOTES  deps      MANIFESTO   runtest-cluster   srcBUGS             dump.rdb  README.md   runtest-sentinel  testsCONTRIBUTING     INSTALL   redis.conf  sentinel.conf     utilsCOPYING          Makefile  runtest     shards[[email protected] redis]# cp redis.conf shards/redis-6379.conf[[email protected] redis]# cp redis.conf shards/redis-6380.conf[[email protected] redis]# cp redis.conf shards/redis-6381.conf[[email protected] redis]# ll

結果:

 [[email protected] redis]# cd shards/
 [[email protected] shards]# ll
 total 144
 -rw-r--r--. 1 root root 46696 Nov 2 22:51 redis-6379.conf
 -rw-r--r--. 1 root root 46696 Nov 2 22:51 redis-6380.conf
 -rw-r--r--. 1 root root 46696 Nov 2 22:51 redis-6381.conf

    1.2確認啟動是否成功:

[[email protected]alhost shards]# redis-server redis-6379.conf [[email protected] shards]# redis-server redis-6380.conf [[email protected] shards]# redis-server redis-6381.conf [[email protected] shards]# ps -ef |grep redisroot      2845     1  0 22:58 ?        00:00:00 redis-server *:6379         root      2849     1  0 22:58 ?        00:00:00 redis-server *:6380         root      2853     1  0 22:59 ?        00:00:00 redis-server *:6381         root      2857  2585  0 22:59 pts/0    00:00:00 grep redis

    1.3測試:

import java.util.ArrayList;import java.util.List;import org.junit.Test;import redis.clients.jedis.JedisPoolConfig;import redis.clients.jedis.JedisShardInfo;import redis.clients.jedis.ShardedJedis;import redis.clients.jedis.ShardedJedisPool;public class TestShardRedis {    @Test    public void testShard(){        /**         * 建立分區的對象         * 1.poolConfig    標示池的大小         * 2.shards        redis分區的節點資訊         */        JedisPoolConfig poolConfig = new JedisPoolConfig();        poolConfig.setMaxTotal(1000);        poolConfig.setTestOnBorrow(true);//擷取串連時,先檢測,如果不行就換一個        List<JedisShardInfo> shards = new ArrayList<>();        shards.add(new JedisShardInfo("192.168.25.132", 6379));        shards.add(new JedisShardInfo("192.168.25.132", 6380));        shards.add(new JedisShardInfo("192.168.25.132", 6381));        ShardedJedisPool pool = new ShardedJedisPool(poolConfig, shards);        //擷取redis的串連        ShardedJedis jedis = pool.getResource();        jedis.set("shards", "儲存分區的資料");        System.out.println(jedis.get("shards"));        //還回串連到pool        pool.returnResource(jedis);    }}

輸出:儲存分區的資料

 

redis分區技術

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.