java操作redis多节点处理方式;http://blog.itpub.net/29254281/viewspace-1188644/
首先maven引入依赖包 <dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
/*
***************************************************************
* 公司名称 :牛牛
* 系统名称 :问问系统
* 类 名 称 :RedisHelper
* 功能描述 : redis缓存处理类
* 业务描述 :
* 作 者 名 :@Author Royal
* 开发日期 :2015-11-04 10:24
***************************************************************
* 修改日期 :
* 修 改 者 :
* 修改内容 :
***************************************************************
*/
package zhengxin.core; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.*; public class RedisHelper { //redis数据库连接池
private static Dictionary<Integer, JedisPool> pools = new Hashtable(); static {
ResourceBundle bundle = ResourceBundle.getBundle("redis");
if (bundle == null) {
throw new IllegalArgumentException(
"[redis.properties] is not found!");
}
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.valueOf(bundle
.getString("redis.pool.maxActive")));
config.setMaxIdle(Integer.valueOf(bundle
.getString("redis.pool.maxIdle")));
config.setTestOnBorrow(Boolean.valueOf(bundle
.getString("redis.pool.testOnBorrow")));
config.setTestOnReturn(Boolean.valueOf(bundle
.getString("redis.pool.testOnReturn"))); //循环创建16个redis数据库连接池,存放在字典里面
for (int i = 0; i < 16; i++) {
JedisPool item = new JedisPool(config, bundle.getString("redis.ip"),
Integer.valueOf(bundle.getString("redis.port")), 0,
bundle.getString("redis.password"), i);
pools.put(i, item);
}
} /**
* 直接返回redispool 方便灵活操作
* @param db 数据库序号
*/
public static JedisPool getRedisPool(Integer db) {
return pools.get(db);
} /**
* 设置数据
* @param key //key
* @param value //值
* @param timeOut //过期时间
* @param db //数据库序号
*/
public static void set(String key, String value, Integer timeOut, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
if (timeOut > 0) {
jredis.expire(key, timeOut);
}
jredis.set(key, value);
poolItem.returnResourceObject(jredis);
} /**
* 获得hash型key某个字段的值
* @param key //key
* @param field //hash字段
* @param db //数据库序号
* */
public static String getHashField(String key, String field, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
String result = jredis.hget(key, field);
poolItem.returnResourceObject(jredis);
return result;
} /**
* 根据hashid获取Map 获得hash型key某个字段的值
* @param hashId //key键
* @param db //数据库序号
* */
public static Map<String, String> getHashValues(String hashId, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
Map<String, String> result = jredis.hgetAll(hashId);
poolItem.returnResourceObject(jredis);
return result;
} /**
* 设置数据
* @param key //key
* @param value //值
* @param field //hash字段
* @param db //数据库序号
*/
public static void SetHashField(String key, String field, String value, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
jredis.hset(key, field, value);
poolItem.returnResourceObject(jredis);
} /**
* 获取数据
* @param key //key
* @param db //数据库序号
*/
public static String get(String key, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
String result = jredis.get(key);
poolItem.returnResourceObject(jredis);
return result;
} /**
* 删除数据
* @param key //key
* @param db //数据库序号
*/
public static void del(String key, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
Long result = jredis.del(key);
poolItem.returnResourceObject(jredis);
} /**
* 队列插入数据
* @param key //键
* @param value //值
* @param db //数据库序号
*/
public static void lpush(String key, String value, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
jredis.lpush(key, value);
poolItem.returnResourceObject(jredis);
} /**
* 队列取出数据
* @param key //键
* @param db //数据库序号
*/
public static String lpop(String key, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
String result = jredis.lpop(key);
poolItem.returnResourceObject(jredis);
return result;
} /**
* hash 获取键字段
* @param key //键
* @param field //hash字段
* @param db //数据库序号
*/
public static String hget(String key, String field, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
String result = jredis.hget(key, field);
poolItem.returnResourceObject(jredis);
return result;
} /**
* hash 删除键字段
* @param key //键
* @param field //hash字段
* @param db //数据库序号
*
*/
public static void hdel(String key, String field, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
jredis.hdel(key, field);
poolItem.returnResourceObject(jredis);
} /**
* 获取key下所有的值
* @param key //键
* @param db //数据库序号
* @return list
*/
public static List<String> llist(String key, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
List<String> result = jredis.lrange(key, 0, -1);
poolItem.returnResourceObject(jredis);
return result;
}
}

  

Java的redis 操作类-优化通用版本的更多相关文章

  1. php的redis 操作类,适用于单台或多台、多组redis服务器操作

    redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台. ...

  2. 设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类

    1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个 ...

  3. Java I/O 操作及优化建议

    Java I/O I/O,即 Input/Output(输入/输出) 的简称.就 I/O 而言.概念上有 5 种模型:blocking I/O.nonblocking I/O,I/O multiple ...

  4. java csv 文件 操作类

    一个CSV文件操作类,功能比较齐全: package tool; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...

  5. 封装一个redis操作类来操作hash格式

    最近项目要用redis,依然是基于tp3.2. 发现thinkphp3.2自带的缓存类并不好使用,就自己封装了一个 目前只支持hash格式,其他数据类型的操作后面用到的时候再补充 <?php / ...

  6. Java 数据库简单操作类

    数据库操作类,将所有连接数据库的配置信息以及基本的CRUD操作封装在一个类里,方便项目里使用,将连接数据库的基本信息放在配置文件 "dbinfo.properties" 中,通过类 ...

  7. java的redis工具类

    package com.mracale.sell.utils; /** * @Auther: Mracale */ import org.springframework.beans.factory.a ...

  8. spring 的redis操作类RedisTemplate

    spring 集成的redis操作几乎都在RedisTemplate内了. 已spring boot为例, 再properties属性文件内配置好 redis的参数 spring.redis.host ...

  9. 菜鸡的Java笔记 数字操作类

    数字操作类        Math 类的使用        Random 类的使用        BigInteger 和 BigDecimal 类的使用                Math 是一 ...

随机推荐

  1. 编写留言板是遇到的mysql中文乱码问题

    mysql中文显示,需要编码统一,数据库链接文件,database,table编码均要设置一致

  2. bzoj3667: Rabin-Miller算法

    Description   Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一个数字,保证在64位长整形范围内,并且没有负数.你需要对于每个数字:第一,检验是否是质数,是质 ...

  3. cocos2dx 3.3创建新项目 和 VS2012解决方案加载失败问题

     首先创建新项目,步骤如下: 1.进入cocos2d-x-3.3\tools\cocos2d-console\bin目录,按住shift+鼠标右键 2.输入 cocos new 项目名 –p 包名 – ...

  4. xcode 必用插件二

    本文大致整理了自己用过的一些插件的使用感想(就是好不好用). 在那之前先简单贴两条插件须知,知道的可以忽略. 1.Alcatraz 类似于管理第三方库的cocoapods,管理插件也有个Alcatra ...

  5. 移动App双周版本迭代实战--转载备用

    对于移动互联网产品来说,迭代的速度就是生命.我创业时做移动App时是一周一版,而现在是2周1版.相比起小公司,大公司迭代时间虽长,却更为不易,因为大公司流程更多,参与人数更多,需求更多,实现这样的快速 ...

  6. vs2010 使用SignalR 提高B2C商城用户体验(一)

    vs2010 使用SignalR 提高B2C商城用户体验(一) 1.需求简介,做为新时代的b2c商城,没有即时通讯,怎么提供用户粘稠度,怎么增加销量,用户购物的第一习惯就是咨询,即时通讯,应运而生.这 ...

  7. DZ真是各种强大

    近期对论坛做了大装修,非常享受这个过程. 真是着迷了,这个装修工程让我接连几天几乎到了废寝忘食的地步. 终于告一段落,又想起来折腾,因为对之前的文库系统感觉种种别扭. 没有空调,没有风扇,居然忙到夜里 ...

  8. 高远介绍的好东东--django-celery

    终于可以到异步消息机制的高档产品啦~~~ 不知能不能代替AJAX.. 参照官方文档试下: 中文文档: http://docs.jinkan.org/docs/celery/getting-starte ...

  9. HTML图片热点、网页划区、拼接、表单

    一.图片热点: 规划出图片上的一个区域,可以做出超链接,直接点击图片区域就可以完成跳转的效果. 示例: 二.网页划区: 在一个网页里,规划出一个区域用来展示另一个网页的内容. 示例: 三.网页的拼接: ...

  10. suse系统FTP问题

    1.修改FTP端口问题 在 这个配置文件中vi /etc/vsftpd.conf 添加 Listen_port=34 vi /etc/services ftp        21/tcp    # F ...