java key value 数据类型_java获取redis中各种数据类型key对应的value代码简单封装

目前在做自动化测试时,设计到需要获取存储在redis中的值,总结了操作代码如下:需要jar包:jedis-2.7.3.jar、commons-pool2-2.4.1.jar

code如下:

[java]

view plain

copy

print?

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;

/**

* redis相关操作类

* @author YanLu

*

*/

public class RedisUtil {

private JedisPool pool=null;

private Jedis redis = null;

Log4jUtil log = new Log4jUtil(this.getClass().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(), GlobalSettings.getProperty("redis.master.host"), Integer.parseInt(GlobalSettings.getProperty("redis.master.port")));

//获取Jedis实例

this.redis = pool.getResource();

log.info("Connection to redis server sucessfully");

}

}

/**

* 关闭连接

* @param pool

* @param redis

*/

public void quitConnection(Jedis redis) {

if (redis != null) {

redis.quit();

//pool.returnResource(redis);

}

}

/**

* 获取key对应的value

*

* 说明:方法中目前只针对key数据类型为String和hash的情况作了处理,其他数据类型可根据需要进行扩展即可

* @param key

* @return

*/

public String getValue(String key){

String value = null;

try {

if(redis == null || !redis.exists(key)){

log.info("key:"+key+" is not found");

quitConnection(redis);

return value;

}

//获取key对应的数据类型

String type = redis.type(key);

log.info("key:" + key + " 的类型为:" + type);

if(type.equals("string")){

//get(key)方法返回key所关联的字符串值

value = redis.get(key);

}

if(type.equals("hash")){

//一下方法仅适用于list.size=1时,否者value将取集合中最后一个元素的值

List list = redis.hvals(key);//hvals(key)返回哈希表 key 中所有域的值

//Set set = redis.hkeys(key);

Iterator it=list.iterator();

while(it.hasNext()){

value = it.next();

log.info("value:"+value);

}

}

if(type.equals("list")){

log.info(key+"类型为list暂未处理...");

}

if(type.equals("set")){

log.info(key+"类型为list暂未处理...");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

//关闭连接

quitConnection(redis);

}

return value;

}

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;

/**

* redis相关操作类

* @author YanLu

*

*/

public class RedisUtil {

private JedisPool pool=null;

private Jedis redis = null;

Log4jUtil log = new Log4jUtil(this.getClass().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(), GlobalSettings.getProperty("redis.master.host"), Integer.parseInt(GlobalSettings.getProperty("redis.master.port")));

//获取Jedis实例

this.redis = pool.getResource();

log.info("Connection to redis server sucessfully");

}

}

/**

* 关闭连接

* @param pool

* @param redis

*/

public void quitConnection(Jedis redis) {

if (redis != null) {

redis.quit();

//pool.returnResource(redis);

}

}

/**

* 获取key对应的value

*

* 说明:方法中目前只针对key数据类型为String和hash的情况作了处理,其他数据类型可根据需要进行扩展即可

* @param key

* @return

*/

public String getValue(String key){

String value = null;

try {

if(redis == null || !redis.exists(key)){

log.info("key:"+key+" is not found");

quitConnection(redis);

return value;

}

//获取key对应的数据类型

String type = redis.type(key);

log.info("key:" + key + " 的类型为:" + type);

if(type.equals("string")){

//get(key)方法返回key所关联的字符串值

value = redis.get(key);

}

if(type.equals("hash")){

//一下方法仅适用于list.size=1时,否者value将取集合中最后一个元素的值

List list = redis.hvals(key);//hvals(key)返回哈希表 key 中所有域的值

//Set set = redis.hkeys(key);

Iterator it=list.iterator();

while(it.hasNext()){

value = it.next();

log.info("value:"+value);

}

}

if(type.equals("list")){

log.info(key+"类型为list暂未处理...");

}

if(type.equals("set")){

log.info(key+"类型为list暂未处理...");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

//关闭连接

quitConnection(redis);

}

return value;

}

[java]

view plain

copy

print?

测试代码如下:

package cn.migu.test;

import org.testng.annotations.Test;

import cn.migu.utils.Log4jUtil;

import cn.migu.utils.RedisUtil;

/**

*  测试RedisUtil类

* @author YanLu

*

*/

public class TestRedis {

private Log4jUtil log = new Log4jUtil(this.getClass().getName());

@Test

public void testRedisUtil(){

RedisUtil ru = new RedisUtil();

//获取redis中对应的value值

String value=ru.getValue("SMS_NODE_TIMES_13814528620");

log.info(value);

}

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值