java获取redis中各种数据类型key对应的value代码简单封装
⽬前在做⾃动化测试时,设计到需要获取存储在redis中的值,总结了操作代码如下:
需要jar包:jedis-2.7.3.jar、commons-pool2-2.4.1.jar
code如下:
package cn.migu.utils;
import java.util.Iterator;
import java.util.List;
import cn.migu.base.GlobalSettings;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/
**
* <Description>redis相关操作类
* @author YanLu
*
*/
public class RedisUtil {
private JedisPool pool=null;
private Jedis redis = null;
Log4jUtil log = new Class().getName());
//构造函数,创建对象时进⾏初始化
public RedisUtil() {
if (pool == null) {
/*
// 池基本配置
//JedisPoolConfig config = new JedisPoolConfig();
// 最⼤连接数, 默认8个
config.setMaxTotal(20);
// 控制⼀个pool最多有多少个状态为idle(空闲的)的jedis实例。
config.setMaxIdle(5);
// 表⽰当borrow(引⼊)⼀个jedis实例时,最⼤的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
config.setMaxWaitMillis(10000);
/
/ 在borrow⼀个jedis实例时,是否提前进⾏validate操作;如果为true,则得到的jedis实例均是可⽤的;
config.setTestOnBorrow(false);
*/
//创建redis连接池
//this.pool = new JedisPool(config,"172.18.173.188",6379);
this.pool = new JedisPool(new JedisPoolConfig(), Property("redis.master.host"), Integer.Property("redis.master.po //获取Jedis实例
log.info("Connection to redis server sucessfully");
}
}
/**
* 关闭连接
* @param pool
* @param redis
*/
public void quitConnection(Jedis redis) {
if (redis != null) {
redis.quit();
//urnResource(redis);
}
}
/
**
/**
* 获取key对应的value
*
* 说明:⽅法中⽬前只针对key数据类型为String和hash的情况作了处理,其他数据类型可根据需要进⾏扩展即可 * @param key
* @return
*/
public String getValue(String key){
String value = null;
try {
if(redis == null || !ists(key)){
log.info("key:"+key+" is not found");
quitConnection(redis);
return value;
}
//获取key对应的数据类型
String type = pe(key);
log.info("key:" + key + " 的类型为:" + type);
if(type.equals("string")){
//get(key)⽅法返回key所关联的字符串值
value = (key);
}
if(type.equals("hash")){
//⼀下⽅法仅适⽤于list.size=1时,否者value将取集合中最后⼀个元素的值
List<String> list = redis.hvals(key);//hvals(key)返回哈希表 key 中所有域的值
//Set<String> set = redis.hkeys(key);
Iterator<String> it=list.iterator();
while(it.hasNext()){
value = it.next();
log.info("value:"+value);
}
}
if(type.equals("list")){
log.info(key+"类型为list暂未处理...");
}
redis支持的五种数据类型if(type.equals("set")){
log.info(key+"类型为list暂未处理...");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//关闭连接
quitConnection(redis);
}
return value;
}
</pre><p></p><p></p><p>测试代码如下:</p><p><pre name="code" class="java">package st; stng.annotations.Test;
import cn.migu.utils.Log4jUtil;
import cn.migu.utils.RedisUtil;
/**
* <Description> 测试RedisUtil类
* @author YanLu
*
*/
public class TestRedis {
private Log4jUtil log = new Class().getName());
@Test
public void testRedisUtil(){
RedisUtil ru = new RedisUtil();
//获取redis中对应的value值
String Value("SMS_NODE_TIMES_138********");
log.info(value);
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论