java 事务操作reids
来源:互联网 发布:淘宝店铺解封需要钱吗 编辑:程序博客网 时间:2024/06/09 10:37
环境准备
jedis-2.2.0.jar
JedisTools类 (网上找的,可以用的)
import java.util.HashMap;
import java.util.Map;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisTools {
/**
* 私有构造器.
*/
private JedisTools() {
}
private static Map<String,JedisPool> maps = new HashMap<String,JedisPool>();
/**
* 获取连接池.
* @return 连接池实例
*/
private static JedisPool getPool(String ip,int port ) {
String key = ip+":" +port;
JedisPool pool = null;
if(!maps.containsKey(key)) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(chan_mid.chan_mid.Config.Config.REDISMAXACTIVE);
config.setMaxIdle(chan_mid.chan_mid.Config.Config.REDISMAXIDLE);
config.setMaxWait(chan_mid.chan_mid.Config.Config.REDISMAXWAIT);
config.setTestOnBorrow(true);
config.setTestOnReturn(true);
try{
/**
*如果你遇到 java.net.SocketTimeoutException: Read timed out exception的异常信息
*请尝试在构造JedisPool的时候设置自己的超时值. JedisPool默认的超时时间是2秒(单位毫秒)
*/
pool = new JedisPool(config, ip, port,chan_mid.chan_mid.Config.Config.REDISTIMEOUT);
maps.put(key, pool);
} catch(Exception e) {
e.printStackTrace();
}
}else{
pool = maps.get(key);
}
return pool;
}
/**
*类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例
*没有绑定关系,而且只有被调用到时才会装载,从而实现了延迟加载。
*/
private static class RedisUtilHolder{
/**
* 静态初始化器,由JVM来保证线程安全
*/
private static JedisTools instance = new JedisTools();
}
/**
*当getInstance方法第一次被调用的时候,它第一次读取
*RedisUtilHolder.instance,导致RedisUtilHolder类得到初始化;而这个类在装载并被初始化的时候,会初始化它的静
*态域,从而创建RedisUtil的实例,由于是静态的域,因此只会在虚拟机装载类的时候初始化一次,并由虚拟机来保证它的线程安全性。
*这个模式的优势在于,getInstance方法并没有被同步,并且只是执行一个域的访问,因此延迟初始化并没有增加任何访问成本。
*/
public static JedisTools getInstance() {
return RedisUtilHolder.instance;
}
/**
* 获取Redis实例.
* @return Redis工具类实例
*/
public Jedis getJedis(String ip,int port) {
Jedis jedis = null;
int count =0;
do{
try{
jedis = getPool(ip,port).getResource();
//log.info("get redis master1!");
} catch (Exception e) {
// 销毁对象
getPool(ip,port).returnBrokenResource(jedis);
}
count++;
}while(jedis==null&&count<chan_mid.chan_mid.Config.Config.RETRYNUM);
return jedis;
}
/**
* 释放redis实例到连接池.
* @param jedis redis实例
*/
public void closeJedis(Jedis jedis,String ip,int port) {
if(jedis != null) {
getPool(ip,port).returnResource(jedis);
}
}
}
Jedis jedis = JedisTools.getInstance().getJedis(Config.Config.JedisUrl, Config.Config.JedisPort);
获取连接
Pipeline pipeline = jedis.pipelined();
pipeline.multi();
/*事务提交内容*/
pipeline.del("demo");
pipeline.zadd("demo",0, "这是值1");
pipeline.zadd("demo",1, "这是值3");
pipeline.zadd("demo",2, "这是值4");
pipeline.exec();
List<Object> results = pipeline.syncAndReturnAll();
int redisUpdateCount = results.size();
logger.info(stockId+"写入redis成功!更新"+redisUpdateCount+"记录");
- java 事务操作reids
- reids 事务学习一
- reids Java基本操作 (转自博客园)
- jedis reids java
- reids事务的伪原子性
- java 对reids的操作 切片与非切片连接池的应用
- java 对reids的操作 切片与非切片连接池的应用
- java事务操作
- JAVA事务操作
- java操作redis事务
- laravel 操作reids 入门 列表操作等
- Java-数据库操作 事务操作
- reids 安装配置 基本操作
- python操作redis之连接reids
- Python操作Reids之任务队列
- Reids操作常见存储结构相关命令
- reids的hash哈希数据类型操作
- Java里面的数据库事务操作
- 新世纪通讯函式库 – ZeroMQ
- LeetCode-292.Nim Game
- android studio 更改背景和设置字体大小
- Fire Station
- Opencv3.0-python的那些事儿:(八)、Opencv的直方图均衡化
- java 事务操作reids
- 安装spark1.3.1单机环境
- Android 事件分发细说
- HDU 5712 很强的DP
- 如何让你的Apache支持https
- iis添加MIME映射
- C#之 String.Format对字符串格式化
- Opencv3.0-python的那些事儿:(六)、Opencv的图像梯度
- struts2如何跟spring整合的,原来是:struts2-spring-plugin.jar