java使用Redis5--分布式存储
2024-08-23 03:01:08
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++);
}
}
最新文章
- yii2 ActiveRecord多表关联以及多表关联搜索的实现
- 如何把家里的pc改装成linux服务器
- 使用freemarker生成word,步骤详解并奉上源代码
- struts2 action 返回图片流
- mysql 恢复备份时出错 Unknown command ‘\”
- 【译】UI设计基础(UI Design Basics)--为iOS设计(Design for iOS)(二)
- select m objects from n objects randomly
- 使用ShareSDK完成Facebook第三方登录和Facebook分享时没办法跳转到Facebook应用
- ubuntu openStack icehouse dashboard theme自定义
- log4j 实例 , 浅析
- TCP/IP具体解释--nagle算法和TCP_NODELAY
- vs2015基于VisualStudioOnline协同工作流程
- final关键字总结
- Redis事务和实现秒杀功能的实现
- Hive| 查询
- layer.tips定义弹出的宽度
- PACS&;DICOM
- 九度OJ 1006 ZOJ问题 (这题測试数据有问题)
- CollabNet Subversion Edge 安装笔记(1):基本安装设定篇
- eclipse下修改默认编码
热门文章
- typedef用法和与define的区别
- python&#39;s mutable &; immutable
- mysql常用语句及关键字
- 46. Permutations (Back-Track,Sort)
- Android SDK Manager检查更新时遇到Failed to fetch URL xxxxxxx reason: Connection to xxxxxx的错误的解决办法!
- centos7 ntp服务器配置
- 8-linux 安装 requests 时 pip install 安装不了
- Golang 字符编码
- mybatis框架入门程序:演示通过mybatis实现数据库的模糊查询操作
- C#中DateTime的各种操作