Jedis的几种操作方式

运行上述代码,控制台输出:

Jedis提供了多种操作方式:单机单连接方式、单机连接池方式、多机分布式+连接池方式。

预备

jedis-2.5.2

commons-pool2-2.2.jar

使用单连接

此方式仅建议用于开发环境做调试用。

// 创建连接

String host = "192.168.56.102";

int port = 6379;

Jedis client = new Jedis(host, port);

// 执行set指令

扫描二维码关注公众号,回复: 9181819 查看本文章

String result = client.set("key-string", "Hello, Redis!");

System.out.println( String.format("set指令执行结果:%s", result) );

// 执行get指令

String value = client.get("key-string");

System.out.println( String.format("get指令执行结果:%s", value) );

运行上述代码,控制台输出:

set指令执行结果:OK

get指令执行结果:Hello, Redis!

使用连接池

此方式适用于仅使用单个Redis实例的场景。

// 生成连接池配置信息

JedisPoolConfig config = new JedisPoolConfig();

config.setMaxIdle(10);

config.setMaxTotal(30);

config.setMaxWaitMillis(3*1000);

// 在应用初始化的时候生成连接池

JedisPool pool = new JedisPool(config, "192.168.56.102", 6379);

// 在业务操作时,从连接池获取连接

Jedis client = pool.getResource();

try {

// 执行指令

String result = client.set("key-string", "Hello, Redis!");

System.out.println( String.format("set指令执行结果:%s", result) );

String value = client.get("key-string");

System.out.println( String.format("get指令执行结果:%s", value) );

} catch (Exception e) {

// TODO: handle exception

} finally {

// 业务操作完成,将连接返回给连接池

if (null != client) {

pool.returnResource(client);

}

} // end of try block

// 应用关闭时,释放连接池资源

pool.destroy();

运行上述代码,控制台输出:

set指令执行结果:OK

get指令执行结果:Hello, Redis!

使用连接池+分布式

在规模较大的系统中,往往会有多个Redis实例做负载均衡。并且还实现主从备份,当主实例发生故障时,切换至从实例提供服务。

类似于Memcached的客户端,Jedis也提供了客户端分布式操作的方式,采用一致性哈希算法。

// 生成多机连接信息列表

List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();

shards.add( new JedisShardInfo("127.0.0.1", 6379) );

shards.add( new JedisShardInfo("192.168.56.102", 6379) );

// 生成连接池配置信息

JedisPoolConfig config = new JedisPoolConfig();

config.setMaxIdle(10);

config.setMaxTotal(30);

config.setMaxWaitMillis(3*1000);

// 在应用初始化的时候生成连接池

ShardedJedisPool pool = new ShardedJedisPool(config, shards);

// 在业务操作时,从连接池获取连接

ShardedJedis client = pool.getResource();

try {

// 执行指令

String result = client.set("key-string", "Hello, Redis!");

System.out.println( String.format("set指令执行结果:%s", result) );

String value = client.get("key-string");

System.out.println( String.format("get指令执行结果:%s", value) );

} catch (Exception e) {

// TODO: handle exception

} finally {

// 业务操作完成,将连接返回给连接池

if (null != client) {

pool.returnResource(client);

}

} // end of try block

// 应用关闭时,释放连接池资源

pool.destroy();

set指令执行结果:OK

get指令执行结果:Hello, Redis!

发布了39 篇原创文章 · 获赞 0 · 访问量 799

猜你喜欢

转载自blog.csdn.net/qq_15458763/article/details/103182635