Jedis初理解
2016-05-05 15:24
106 查看
在实际的项目开发中,各种语言是使用Redis的客户端库来与Redis交互。针对Java语言,Redis官方推荐Jedis。
Jedis提供了多种操作方式:单机单连接方式、单机连接池方式、多机分布式+连接池方式。
jedis-2.5.2
commons-pool2-2.2.jar
此方式仅建议用于开发环境做调试用。
运行上述代码,控制台输出:
此方式适用于仅使用单个Redis实例的场景。
运行上述代码,控制台输出:
在规模较大的系统中,往往会有多个Redis实例做负载均衡。并且还实现主从备份,当主实例发生故障时,切换至从实例提供服务。
类似于Memcached的客户端,Jedis也提供了客户端分布式操作的方式,采用一致性哈希算法。
运行上述代码,控制台输出:
Jedis提供了多种操作方式:单机单连接方式、单机连接池方式、多机分布式+连接池方式。
所需的jar包:
jedis-2.5.2commons-pool2-2.2.jar
使用单连接
此方式仅建议用于开发环境做调试用。// 创建连接 String host = "192.168.56.102"; int port = 6379; Jedis client = new Jedis(host, port); // 执行set指令 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!
相关文章推荐
- Mathematica绘制常见曲线
- define中的#、##、#@及\
- Qt在pro中添加依赖库的简单方法
- mininet python api
- JiaThis 分享插件调用
- 语言使用强项推荐
- cordova等插件功能点击后没响应响应的解决
- nodejs模块使用(Mac)
- [CAQ6]支付宝返回4000错误
- springmvc 生成验证码
- css自定义字体
- Jupyter(IPython)
- 网易视频云技术专家分析:你可能不知道的MYSQL“隐藏”参数
- bzoj 2809: [Apio2012]dispatching(可并堆)
- Android Volley框架及其get,post方式的使用
- First Bad Version Leetcode
- Java多线程基础:进程和线程之由来
- Android6.0运行时权限的处理及解决办法
- WEB前端性能优化小结
- Assertion failure in -[UICollectionView layoutSublayersOfLayer:]