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++);
}
}

最新文章

  1. yii2 ActiveRecord多表关联以及多表关联搜索的实现
  2. 如何把家里的pc改装成linux服务器
  3. 使用freemarker生成word,步骤详解并奉上源代码
  4. struts2 action 返回图片流
  5. mysql 恢复备份时出错 Unknown command ‘\”
  6. 【译】UI设计基础(UI Design Basics)--为iOS设计(Design for iOS)(二)
  7. select m objects from n objects randomly
  8. 使用ShareSDK完成Facebook第三方登录和Facebook分享时没办法跳转到Facebook应用
  9. ubuntu openStack icehouse dashboard theme自定义
  10. log4j 实例 , 浅析
  11. TCP/IP具体解释--nagle算法和TCP_NODELAY
  12. vs2015基于VisualStudioOnline协同工作流程
  13. final关键字总结
  14. Redis事务和实现秒杀功能的实现
  15. Hive| 查询
  16. layer.tips定义弹出的宽度
  17. PACS&amp;DICOM
  18. 九度OJ 1006 ZOJ问题 (这题測试数据有问题)
  19. CollabNet Subversion Edge 安装笔记(1):基本安装设定篇
  20. eclipse下修改默认编码

热门文章

  1. typedef用法和与define的区别
  2. python&#39;s mutable &amp; immutable
  3. mysql常用语句及关键字
  4. 46. Permutations (Back-Track,Sort)
  5. Android SDK Manager检查更新时遇到Failed to fetch URL xxxxxxx reason: Connection to xxxxxx的错误的解决办法!
  6. centos7 ntp服务器配置
  7. 8-linux 安装 requests 时 pip install 安装不了
  8. Golang 字符编码
  9. mybatis框架入门程序:演示通过mybatis实现数据库的模糊查询操作
  10. C#中DateTime的各种操作