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 是一 ...
随机推荐
- 【java版坦克大战---准备篇】 java 绘图
要写坦克大战当然要先画出坦克.java画图是基础. package com.game; import java.awt.*; import javax.swing.*; public class Pr ...
- PHP面向对象的特性
1.抽象性2.封装性3.继承extends4.多态
- 在ECSHOP首页今日特价(促销商品)增加倒计时效果
看到不少朋友在找首页特价商品倒计时的修改方法,写了这篇文章希望能帮到有此需要的朋友们 1.首先修改程序部分 打开includes/lib_goods.php 找到get_promote_goods() ...
- Poco之ftp目录切换与创建
TEMPLATE = app QT += qml quick widgets#LIBS += -lPocoFoundation -lPocoXML -lPocoNetSOURCES += main.c ...
- POJ 3122 Pie 二分枚举
题目:http://poj.org/problem?id=3122 这个题就好多了,没有恶心的精度问题,所以1A了.. #include <stdio.h> #include <ma ...
- Android直接通过ip进行Http请求
在测试环境,如果直接通过ip访问的话,比如:url:123.123.123/user/login.do?username=a&psw=b,这样是不行的,会报protocal协议错误,要写全称, ...
- asp.net core 认证及简单集群
众所周知,在Asp.net WebAPI中,认证是通过AuthenticationFilter过滤器实现的,我们通常的做法是自定义AuthenticationFilter,实现认证逻辑,认证通过,继续 ...
- 8月1日起,这些新政将影响移动互联网产业-b
今天,国家互联网信息办公室发布<移动互联网应用程序信息服务管理规定>.这项规定将从8月1日起生效,其中侧重对两类玩家提出了监管意见,他们分别是: 移动互联网应用程序提供者,即提供信息服务的 ...
- PS仿制图章
颜色总不对,和周围不太搭配,这时候把流量调小点,然后用渐变工具.自己实践所得.
- AD认证
这两天接触到一个新的知识点,AD验证.什么是AD验证?Active Directory——活动目录,活动目录只是LDAP的一个实现,提供LDAP认证.Radius认证和NTML认证,都是标准认证方式 ...