jedis针对三种redis工作模式的连接方式
来源:互联网 发布:stc89c52单片机简介 编辑:程序博客网 时间:2024/05/23 13:20
这里说的三种工作模式是指:
1、单机模式
2、分片模式
3、集群模式(since 3.0)
说明图详见以下:
使用jedis连接模式一:
//初始化连接private Jedis jedis=new Jedis("192.168.0.100", 6379);
jedis.set("a","b");
jedis.hmset(key, hash);
……
使用jedis连接模式二:
GenericObjectPoolConfig config=new GenericObjectPoolConfig();
config.setMaxIdle(32);
config.setMinIdle(12);
config.setTestOnBorrow(true);
config.setTestOnReturn(rtrue);
config.setTestWhileIdle(true);
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
for (int i = 0; i < shareds.size(); i++) {
shards.add(new JedisShardInfo("192.168.0.100", 6379, 200));
}
// 构造池
ShardedJedisPool shardedJedisPool= new ShardedJedisPool(config, shards);
ShardedJedis jedis=shardedJedisPool.getResource();
jedis.set("a","b");
jedis.hmset(key, hash);
……
使用jedis连接模式三:
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
for (int i = 0; i < shareds.size(); i++) {
jedisClusterNodes.add(new HostAndPort("192.168.0.100",6379));
}
// 构造池
BinaryJedisCluster cluster= new BinaryJedisCluster(jedisClusterNodes);
cluster.set("a","b");
cluster.hmset(key, hash);
……
BinaryJedisCluster.java是为了让jedis支持byte数组形式value重写的一个类,参考网上文档,记不得来源了。以下是代码(部分):
public class BinaryJedisCluster extends JedisCluster {
public String set(final String key, final byte[] value) {
return new JedisClusterCommand<String>(connectionHandler, timeout,
maxRedirections) {
public String execute(Jedis connection) {
return connection.set(SafeEncoder.encode(key), value);
}
}.run(key);
}
public byte[] getBytes(final String key) {
return new JedisClusterCommand<byte[]>(connectionHandler, timeout,
maxRedirections) {
public byte[] execute(Jedis connection) {
return connection.get(SafeEncoder.encode(key));
}
}.run(key);
}
public Set<byte[]> zrevrangeByScoreBytes(final String key, final double max,
final double min, final int offset, final int count) {
return new JedisClusterCommand<Set<byte[]>>(connectionHandler, timeout,
maxRedirections) {
public Set<byte[]> execute(Jedis connection) {
return connection.zrevrangeByScore(SafeEncoder.encode(key),
max, min, offset, count);
}
}.run(key);
}
public Set<byte[]> zrevrangeByScoreBytes(final String key, final String max,
final String min, final int offset, final int count) {
return new JedisClusterCommand<Set<byte[]>>(connectionHandler, timeout,
maxRedirections) {
public Set<byte[]> execute(Jedis connection) {
return connection.zrevrangeByScore(SafeEncoder.encode(key),
SafeEncoder.encode(max), SafeEncoder.encode(min), offset, count);
}
}.run(key);
}
public Long linsert(final String key, final LIST_POSITION where,
final byte[] pivot, final byte[] value) {
return new JedisClusterCommand<Long>(connectionHandler, timeout,
maxRedirections) {
public Long execute(Jedis connection) {
return connection.linsert(SafeEncoder.encode(key), where,
pivot, value);
}
}.run(key);
}
public Long lpushx(final String key, final byte[]... string) {
return new JedisClusterCommand<Long>(connectionHandler, timeout,
maxRedirections) {
public Long execute(Jedis connection) {
return connection.lpushx(SafeEncoder.encode(key), string);
}
}.run(key);
}
public Long rpushx(final String key, final byte[]... string) {
return new JedisClusterCommand<Long>(connectionHandler, timeout,
maxRedirections) {
public Long execute(Jedis connection) {
return connection.rpushx(SafeEncoder.encode(key), string);
}
}.run(key);
}
public List<byte[]> blpopBytes(final String arg) {
return new JedisClusterCommand<List<byte[]>>(connectionHandler,
timeout, maxRedirections) {
public List<byte[]> execute(Jedis connection) {
return connection.blpop(SafeEncoder.encode(arg));
}
}.run(null);
}
public List<byte[]> brpopBytes(final String arg) {
return new JedisClusterCommand<List<byte[]>>(connectionHandler,
timeout, maxRedirections) {
public List<byte[]> execute(Jedis connection) {
return connection.brpop(SafeEncoder.encode(arg));
}
}.run(null);
}
}
编译后jedis jar包下载地址:http://pan.baidu.com/s/1mgIPYDa
源码地址:http://pan.baidu.com/s/1jGIobBo
- jedis针对三种redis工作模式的连接方式
- jedis针对三种redis工作模式、哨兵模式的源码阅读分析
- jedis针对三种redis工作模式、哨兵模式的源码阅读分析
- Jedis针对redis的操作
- jedis操作redis的几种方式
- jedis操作redis的几种方式
- 使用jedis连接单机和集群redis的两种方式
- redis三种连接方式
- jedis客户端操作redis主要三种模式
- jedis 集群模式下连接redis原理
- Redis实践(三)基于jedis开发java应用:redis的8种方式设置key,value
- Redis-Jedis连接Redis
- Redis的Java客户端Jedis的八种调用方式
- jedis没连接上redis的主要原因
- Java连接Redis服务,Jedis的使用
- Jedis连接Redis异常的问题
- 通过Jedis连接CentOS的Redis
- VMWare网络连接的三种工作模式
- java递归实现二分查找算法
- Leetcode 67. Add Binary (Easy) (cpp)
- Python解析excel文件并存入sqlite数据库
- 使用了google zxing作为二维码生成工具
- VMware安装CentOS以及CentOS的一些配置
- jedis针对三种redis工作模式的连接方式
- Edittext不可编辑可点击 & 解决Edittext第二次点击才有效
- cocos2dx 自动遍历class下所有cpp文件 区分win32和mac
- 几个著名java开源缓存系统的介绍
- 面试总结篇之Javascript(三)
- Wireshark捕获经过指定ip的数据包
- JAVA ABA问题
- js图片自动轮播代码分享(js图片轮播)
- 完全理解Python迭代对象、迭代器、生成器