Java的redis 操作类-优化通用版本
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 操作类-优化通用版本的更多相关文章
- php的redis 操作类,适用于单台或多台、多组redis服务器操作
redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台. ...
- 设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类
1 单例模式简单介绍 单例模式是一种经常使用的软件设计模式. 在它的核心结构中仅仅包括一个被称为单例类的特殊类. 通过单例模式能够保证系统中一个类仅仅有一个实例并且该实例易于外界訪问.从而方便对实例个 ...
- Java I/O 操作及优化建议
Java I/O I/O,即 Input/Output(输入/输出) 的简称.就 I/O 而言.概念上有 5 种模型:blocking I/O.nonblocking I/O,I/O multiple ...
- java csv 文件 操作类
一个CSV文件操作类,功能比较齐全: package tool; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...
- 封装一个redis操作类来操作hash格式
最近项目要用redis,依然是基于tp3.2. 发现thinkphp3.2自带的缓存类并不好使用,就自己封装了一个 目前只支持hash格式,其他数据类型的操作后面用到的时候再补充 <?php / ...
- Java 数据库简单操作类
数据库操作类,将所有连接数据库的配置信息以及基本的CRUD操作封装在一个类里,方便项目里使用,将连接数据库的基本信息放在配置文件 "dbinfo.properties" 中,通过类 ...
- java的redis工具类
package com.mracale.sell.utils; /** * @Auther: Mracale */ import org.springframework.beans.factory.a ...
- spring 的redis操作类RedisTemplate
spring 集成的redis操作几乎都在RedisTemplate内了. 已spring boot为例, 再properties属性文件内配置好 redis的参数 spring.redis.host ...
- 菜鸡的Java笔记 数字操作类
数字操作类 Math 类的使用 Random 类的使用 BigInteger 和 BigDecimal 类的使用 Math 是一 ...
随机推荐
- ThinkPHP下使用Ueditor
在做课程设计的时候想到用百度的Ueditor,可在配置的时候出现了一些问题 Ueditor感觉不是很难,以前有个人定制的,现在取消了这项服务,但是我们可以自己进行配置 下载地址:http://uedi ...
- yii之srbac详解
一.安装篇 1.下载http://www.yiiframework.com/extension/srbac/ 将解压得到的srbac文件夹放在moudles目录下. 2.在项目的主配置文件中mai.p ...
- Python 修饰器
描述:对于函数foo,使用修饰器修饰,在执行foo函数的同时统计执行时间.这样其他函数都可以使用此修饰器得到运行时间. (有返回值和没有返回值的函数要用不同的修饰器似乎) (对于有返回值的函数,不确定 ...
- ul动态增加li
--> aaa bbb <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
- 提交App Store注意事项1
1.未遵守苹果iOS APP数据储存指导方针. 如果你的App有离线数据下载功能,尤其需要关注这一点.因为离线数据一般占用存储空间比较大,可以被重新下载和重建,但是用户往往希望系统存储空间紧时也依然能 ...
- [转]如何根据cpu的processor数来确定程序的并发线程数量
原文:http://blog.csdn.net/kirayuan/article/details/6321967 我们可以在cat 里面发现processor数量,这里的processor可以理解为逻 ...
- BZOJ 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富
Description 最近,奶牛们热衷于把金币包在面粉里,然后把它们烤成馅饼.第i块馅饼中含有Ni(1<=Ni<=25)块金币,并且,这个数字被醒目地标记在馅饼表面. 奶牛们把所有烤好的 ...
- The APR based Apache Tomcat Native library
Tomcat启动的时候出现下面这样的提示: 2015-11-06 14:24:12 org.apache.catalina.core.AprLifecycleListener init 信息: The ...
- SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-008-在XML配置文件中引入JAVA配置文件 <import> 、<bean>
一.在xml中引入xml,用<import> <?xml version="1.0" encoding="UTF-8"?> <be ...
- logstahs 匹配isslog
2016-11-30 06:33:33 192.168.5.116 GET /Hotel/HotelDisplay/cncqcqb230 - 80 - 192.168.9.2 Mozilla/5.0+ ...