Redis客户端之jedis的使用简介
来源:互联网 发布:清真食品 知乎 编辑:程序博客网 时间:2024/06/04 19:34
Redis客户端之jedis的使用简介
依赖两个jar包:
jedis-2.9.0.jar和commons-pool2-2.4.2.jar
1.Jedis简单使用
/***@param host String*@param port int*/Jedis jedis = new Jedis("localhost", 6379);//初始化jedis.set("key", "value");//写入key-valueString value = jedis.get("key");//读取key-valueSystem.out.println("value:"+value);jedis.disconnect();jedis.close();
上述代码简单说明了利用jedis对redis实现简单的读写操作,当然redis支持多种数据类型的读写操作,后续会单独写一篇文章详细描述。
执行上面的代码即可输出value值,注意host和port的值要根据具体的redis配置进行设置,并且需要在最后释放资源,关闭连接,后面会涉及到redis连接池的概念,相应的为释放回收资源.
2.Jedis连接池的使用
private static JedisPool jedisPool;public static JedisPool getPool(){ if(null == jedisPool) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(5); //设置一个pool中闲置(idle)的jedis实例个数 jedisPoolConfig.setMaxWaitMillis(2000);//设置最长等待时间(获取jedis实例的时间) jedisPoolConfig.setMaxTotal(100);//设置pool分配的jedis实例最大数量 jedisPoolConfig.setTestOnBorrow(true);//设置在获取jedis实例前进行可用性检查 jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379, 3000);//初始化pool } return jedisPool;}/** * 回收jedis实例 * @param jedisPool * @param jedis * @param isBroken true为异常情况,false为正常情况 */@SuppressWarnings("deprecation")public static void returnResource(JedisPool jedisPool, Jedis jedis, boolean isBroken){ if(null == jedis){ return; } if(isBroken){ jedisPool.returnResourceObject(jedis); }else{ jedisPool.returnResource(jedis); }}public static String get(String key){ JedisPool pool = null; Jedis jedis = null; boolean isBroken = false; try{ pool = getPool(); jedis = pool.getResource(); String value = jedis.get(key); return value; }catch(Exception e){ isBroken = true; e.printStackTrace(); }finally{ returnResource(pool, jedis, isBroken); } return null;}
需要注意的是在回收jedis实例时,如果出现异常情况,回收的方式会有所不同, @see returnResource(JedisPool jedisPool, Jedis jedis, boolean isBroken)
池化是目前比较普遍常规的操作,如果无限制的创建jedis实例或者在需要时才创建jedis实例,这样的做法是低效的,会存在一定的性能问题(视情况而定),像对线程的使用一般也是要进行池化操作的。
3.Jedis的分布式实现
private static ShardedJedisPool shardedJedisPool;private static final String HOST_MASTER = "localhost"; //主机private static final int HOST_MASTER_PORT = 6379;//主机端口private static final String HOST_SLAVE = "192.168.193.37";//从机private static final int HOST_SLAVE_PORT = 6379;//从机端口public static ShardedJedisPool getShardedPool(){ if(null == jedisPool) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(5); //设置一个pool中闲置(idle)的jedis实例个数 jedisPoolConfig.setMaxWaitMillis(2000);//设置最长等待时间(获取jedis实例的时间) jedisPoolConfig.setMaxTotal(100);//设置pool分配的jedis实例最大数量 jedisPoolConfig.setTestOnBorrow(true);//设置在获取jedis实例前进行可用性检查 //存入redis服务器主机信息 List<JedisShardInfo> jedisInfoList = new ArrayList<JedisShardInfo>(); JedisShardInfo masterShardInfo = new JedisShardInfo(HOST_MASTER, HOST_MASTER_PORT); JedisShardInfo slaveShardInfo = new JedisShardInfo(HOST_SLAVE, HOST_SLAVE_PORT); jedisInfoList.add(masterShardInfo); jedisInfoList.add(slaveShardInfo); shardedJedisPool = new ShardedJedisPool(jedisPoolConfig, jedisInfoList,Hashing.MURMUR_HASH,Sharded.DEFAULT_KEY_TAG_PATTERN); } return shardedJedisPool;}
这里只简单说明分布式jedis连接池的初始化方式,get、set方式与普通的jedis无异,这里不再展开描述。当然,在实际开发过程中,有关redis服务器的相关配置一般是在properties文件中配置的,这里为简化操作,直接在代码中写明。在大规模的应用系统中,分布式的redis缓存是必不可少的,因此掌握redis的分布式实现也是很有必要的。同样,这一块后续也会有详细的文章作介绍。
4.Jedis的pipeline管道
管道的作用在于便于做数据批量操作。
5.Jedis的Pub/Sub发布/订阅模式
未完,待续~~~
阅读全文
0 0
- Redis客户端之jedis的使用简介
- Redis客户端之jedis的使用简介
- Redis之Jedis客户端使用
- redis客户端--Jedis的使用
- Redis 客户端 Jedis的使用
- redis 客户端 jedis的使用
- Redis客户端之Jedis
- Redis的java客户端Jedis的使用
- redis客户端jedis的简单使用
- redis的Java客户端jedis使用示例
- 使用Redis的Java客户端Jedis
- 使用Redis的Java客户端Jedis
- 使用Redis的Java客户端Jedis
- 使用Redis的Java客户端Jedis
- 使用Redis的Java客户端Jedis
- Redis集群 Java客户端Jedis的使用
- 使用redis的java客户端-----jedis
- 使用Redis的jedis客户端整合spring
- 导致微信公众平台设置网页授权域名“无法访问xxx指向的web服务器(或虚拟主机)的目录,请检查网络设置”的一种原因
- 项目日记3—服务器环境搭建(二)
- 蓝桥杯 算法训练 6-1 递归求二项式系数值
- Python(2)————变量的6大标准数据类型
- AttributeError: '_Screen' object has no attribute 'onkeypress' python 的例子
- Redis客户端之jedis的使用简介
- 用 Python 连接 MySQL 的几种姿势
- Class vs. Component vs. Control 类、组件和控件
- [luogu]P2085最小函数值-堆排的玄学运用
- 自定义参数绑定ConversionService和mvc:resources的命名冲突
- Tkinter教程之Listbox篇
- c++ 链表的初学
- java心得(hashmap之红黑树)
- Polly 弹性和瞬态故障处理库 介绍