首先构建非切片连接池jedisPool对象,写好配置redis连接的方法。

/**
* 构建redis切片连接池
*
* @param ip
* @param port
* @return JedisPool
*/
public static JedisPool getJedisPool() {
if (jedisPool == null) {
synchronized (lock) {
//redis服务器对应的IP和端口
String redisIp = PropertiesUtils.getProperties("REDIS_SERVER_IP");
Integer redisPort = Integer.valueOf(PropertiesUtils.getProperties("REDIS_SERVER_PORT"));
if (jedisPool == null) {
JedisPoolConfig config = new JedisPoolConfig();
//设置连接池初始化大小和最大容量 // 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
// 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
config.setMaxTotal(-1);
// 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
config.setMaxIdle(1000);
// 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
config.setMaxWaitMillis(1000 * 30);
// 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
config.setTestOnBorrow(true);
// 写
jedisPool = new JedisPool(config, redisIp, redisPort,DEFAULT_TIME_OUT); }
}
}
return jedisPool;
}

我们都知道redis是key,value型就当它是内存数据库把,虽然一般常用于数据缓存,毕竟你往内存中放几千万条数据会弄爆- -(虽然我就是要这么干)  下来,根据key获取value

    /**
* 获取数据
*
* @param key
* @return
*/
public static String getForString(String key){
List<String> values = mgetForString(key);
if(values == null) {
return null;
} else {
return values.get(0);
}
}

也可根据key获取value的集合

 /**
* 获取数据
*
* @param key
* @return
*/
public static List<String> mgetForString(String... key){
List<String> value = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getJedisPool();
jedis = pool.getResource();
value = jedis.mget(key);
} catch (Exception e) {
log.error(e);
} finally {
//返还到连接池
returnJedisResource(jedis);
}
return value;
}

将数据加载到redis中的方法 一般是用set. 如下列方法,这里指定value是String类型,也是因为我的业务关系把value转成了json串~

public static void setForString(String key,String value){
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getJedisPool();
jedis = pool.getResource();
jedis.set(key, value);
} catch (Exception e) {
log.error(e);
} finally {
//返还到连接池
returnJedisResource(jedis);
} }

也可获取哈希结构的字段和值

/**
* 设置哈希结构的字段和值
* @param key
* @param value
*/
public static void setForHashObj(String key, Map<String, String> value) {
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getJedisPool();
jedis = pool.getResource();
jedis.hmset(key, value);
} catch (Exception e) {
log.error(e);
} finally {
// 返还到连接池
returnJedisResource(jedis);
}
}

这里的Map也可以改为List<Map<String, String>> values,其实一样的~然后再遍历这个Map即可~

最新文章

  1. AAU
  2. Java网络编程之流——readline()方法的bug
  3. c# 字符串操作
  4. 说说设计模式~装饰器模式(Decorator)~多功能消息组件的实现
  5. 给swift程序猿留下深刻印象的10个Swift代码
  6. 转 用C API 操作MySQL数据库
  7. [HTML5]label标签使用以及建议
  8. Android 学习之--android多线程断点下载
  9. linux expect 简单讲解
  10. DIY Ruby CPU 分析——Part I
  11. DB天气安卓客户端测试计划
  12. 监控Tomcat并启动
  13. JavaSE复习日记 : 方法的调用和方法的重载
  14. Eclipse+Maven命令创建webapp项目&lt;三&gt;
  15. 使用anaconda创建tensorflow环境后如何在jupyter notebook中使用
  16. 2019年10个最受欢迎的JavaScript动画库!
  17. 使用mybatis-generator工具自动生成mybatis代码
  18. UVA - 12487 Midnight Cowboy(LCA+思维)
  19. SQL日期时间和字符串函数
  20. k短路([SDOI2010]魔法猪学院)

热门文章

  1. puppet安装配置及使用
  2. Oracle学习系列1
  3. AJAX保留浏览历史的解决方案——hashchange()
  4. VS2013远程调试功能
  5. 对于python,一切事物都是对象,对象基于类创建
  6. oracle中如何指定表字段自增
  7. AWR分析。(shared_pool,sga_size大小设置)
  8. android取国家,语言,存储大小等
  9. 如何将maven项目导入myeclipse中
  10. windows知识点