zoukankan      html  css  js  c++  java
  • java使用Redis5--分布式存储

    Redis实现分布式存储的方法主要是采用一致性哈稀分片(Shard),将不同的key分配到不同的redis server上,达到横向扩展的目的。

    package redis;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import redis.clients.jedis.JedisPoolConfig;
    import redis.clients.jedis.JedisShardInfo;
    import redis.clients.jedis.ShardedJedis;
    import redis.clients.jedis.ShardedJedisPool;
    import redis.clients.util.Hashing;
    import redis.clients.util.Sharded;
    
    public class RedisShardPoolTest {
    
        static ShardedJedisPool pool;
    
        static {
            JedisPoolConfig config = new JedisPoolConfig();// Jedis池配置
            config.setMaxTotal(500);// 最大活动的对象个数
            config.setMaxIdle(1000 * 60);// 对象最大空闲时间
            config.setMaxWaitMillis(1000 * 10);// 获取对象时最大等待时间
            config.setTestOnBorrow(true);
            String hostA = "192.168.77.135";
            int portA = 6378;
            String hostB = "192.168.77.135";
            int portB = 6380;
            List<JedisShardInfo> jdsInfoList = new ArrayList<JedisShardInfo>(2);
            JedisShardInfo infoA = new JedisShardInfo(hostA, portA);
            // infoA.setPassword("redis.360buy");
            JedisShardInfo infoB = new JedisShardInfo(hostB, portB);
            // infoB.setPassword("redis.360buy");
            jdsInfoList.add(infoA);
            jdsInfoList.add(infoB);
            pool = new ShardedJedisPool(config, jdsInfoList, Hashing.MURMUR_HASH, Sharded.DEFAULT_KEY_TAG_PATTERN);
        }
    
        /**
         * 
         * @param args
         */
    
        public static void main(String[] args) {
            ShardedJedis jds = null;
            // key += "{aaa}";
            try {
                jds = pool.getResource();
                for (int i = 0; i < 100; i++) {
                    String key = generateKey();
                    System.out.println(key + ":" + jds.getShard(key).getClient().getHost() + ":" + jds.getShard(key).getClient().getPort());
                    System.out.println(jds.set(key, "1111111111111111111111111111111"));
                    System.out.println(jds.get(key));
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                pool.returnResource(jds);
            }
        }
    
        private static int index = 1;
    
        public static String generateKey() {
            return String.valueOf(Thread.currentThread().getId()) + "_" + (index++);
        }
    }
  • 相关阅读:
    斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”笔记
    面向对象基础知识二、对象的创建和销毁
    英语思维20210907
    英语思维20210908
    3.2 Dependencies of the Projects in the Solution 解决方案中项目间的依赖项
    面向对象基础知识三、对象组合
    面向对象基础知识四、对象复制
    3 Implementation: The Big Picture 实现:蓝图
    面向对象基础知识五、对象序列化
    英语思维20210906
  • 原文地址:https://www.cnblogs.com/yangmengdx3/p/4708375.html
Copyright © 2011-2022 走看看