Redis工具类,不用框架时备用
redis.hostName=127.0.0.1
redis.port=6379
redis.database=3
redis.timeout=15000
redis.usePool=true
redis.maxWaitMillis=3000
redis.maxIdle=1000
redis.minEvictableIdleTimeMillis=300000
redis.numTestsPerEvictionRun=3
redis.timeBetweenEvictionRunsMillis=60000
redis.maxTotal=10
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; public class RedisCacheUtil { private static Logger logger = LoggerFactory.getLogger(RedisCacheUtil.class);
private final JedisPoolConfig cfg;
private final JedisPool jedis_pool; private RedisCacheUtil() {
cfg = getConfig();
jedis_pool = getJedisPool();
} private JedisPool getJedisPool() {
String host = PropertiesUtil.getInstance().findPropVal("redis.hostName");
int port = (int) PropertiesUtil.getInstance().findPropVal("redis.port", Integer.class);
int timeout = (int) PropertiesUtil.getInstance().findPropVal("redis.timeout", Integer.class);
int db=(int) PropertiesUtil.getInstance().findPropVal("redis.database", Integer.class);
JedisPool pool = new JedisPool(cfg, host, port, timeout, null, db);
return pool;
} // private JedisConnectionFactory getJedisConnectionFactory() {
// JedisConnectionFactory fac = new JedisConnectionFactory(cfg);
// return fac;
// }
//
// public ValueOperations<String, String> getOptionTool() {
// JedisConnectionFactory fac = getJedisConnectionFactory();
// RedisTemplate<String, String> tmp = new RedisTemplate<>();
// tmp.setConnectionFactory(fac);
// tmp.setKeySerializer(new StringRedisSerializer());
// tmp.setValueSerializer(new StringRedisSerializer());
// return tmp.opsForValue();
// }
//
// public ValueOperations<String, Object> getOptionToolBinary() {
// JedisConnectionFactory fac = getJedisConnectionFactory();
// RedisTemplate<String, Object> tmp = new RedisTemplate<>();
// tmp.setConnectionFactory(fac);
// tmp.setKeySerializer(new StringRedisSerializer());
// tmp.setValueSerializer(new GenericJackson2JsonRedisSerializer());
// return tmp.opsForValue();
// } private JedisPoolConfig getConfig() {
JedisPoolConfig cfg = new JedisPoolConfig();
int maxIdle = (int) PropertiesUtil.getInstance().findPropVal("redis.maxIdle", Integer.class);
int minEvictableIdleTimeMillis = (int) PropertiesUtil.getInstance()
.findPropVal("redis.minEvictableIdleTimeMillis", Integer.class);
int numTestsPerEvictionRun = (int) PropertiesUtil.getInstance().findPropVal("redis.numTestsPerEvictionRun",
Integer.class);
int timeBetweenEvictionRunsMillis = (int) PropertiesUtil.getInstance()
.findPropVal("redis.timeBetweenEvictionRunsMillis", Integer.class);
long maxWaitMillis= (long) PropertiesUtil.getInstance()
.findPropVal("redis.maxWaitMillis", Long.class);
int maxTotal= (int) PropertiesUtil.getInstance()
.findPropVal("redis.maxTotal", Integer.class);
cfg.setMaxIdle(maxIdle);
cfg.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
cfg.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
cfg.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
cfg.setMaxWaitMillis(maxWaitMillis);
cfg.setMaxTotal(maxTotal);
return cfg;
} private static final RedisCacheUtil instance = new RedisCacheUtil(); public static final RedisCacheUtil instance() {
return instance;
} /**
* 将数据写入内存
*
* @param key
* @param val
*/
public void add(String key, String val) {
Jedis jedis = jedis_pool.getResource();
jedis.set(key, val);
jedis.close();
} /**
* 获取数据
*
* @param key
* @param val
*/
public String get(String key) {
Jedis jedis = jedis_pool.getResource();
String tmp = jedis.get(key);
jedis.close(); if (tmp == null) {
tmp = "";
}
return tmp;
} /**
* 将内存数据写入磁盘,恢复时或者重启服务自动加载
*/
public void writeToDB() {
Jedis jedis = jedis_pool.getResource();
jedis.save();
jedis.close();
} /**
* 追加内容
*
* @param key
* @param val
*/
public void append(String key, String val) {
Jedis jedis = jedis_pool.getResource();
jedis.append(key, val);
jedis.close();
} /**
* 删除key,删除内存中的数据
*
* @param key
*/
public void del(String key) {
Jedis jedis = jedis_pool.getResource();
jedis.del(key);
jedis.close();
} /**
* 取除内存数据,将其转换为jsonArray
*
* @param key
* @return
*/
public JSONArray getJSONArray(String key) {
Jedis jedis = jedis_pool.getResource();
String val = jedis.get(key);
jedis.close(); if (val == null || val.trim().length() == 0) {
return new JSONArray();
} else {
try {
return JSONObject.parseObject(val).getJSONArray("data");
} catch (Exception e) {
logger.error(e.getMessage());
return JSONArray.parseArray(val);
}
}
}
}
Redis工具类,不用框架时备用的更多相关文章
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- redis 工具类 单个redis、JedisPool 及多个redis、shardedJedisPool与spring的集成配置
http://www.cnblogs.com/edisonfeng/p/3571870.html http://javacrazyer.iteye.com/blog/1840161 http://ww ...
- SpringBoot整合Redis及Redis工具类撰写
SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable). ...
- redistemplate优雅地操作redis redis 工具类
参考:https://www.cnblogs.com/superfj/p/9232482.html redis 工具类 package com.service; import org.springfr ...
- java的redis工具类
package com.mracale.sell.utils; /** * @Auther: Mracale */ import org.springframework.beans.factory.a ...
- Redis 工具类 java 实现的redis 工具类
最近了解了一下非关系型数据库 redis 会使用简单的命令 在自己本地电脑 使用时必须先启动服务器端 在启动客户端 redis 简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内 ...
- Java操作Redis工具类
依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...
- spring boot 使用redis 及redis工具类
1-添加maven依赖 2-添加redis配置 3-工具类 1-添加maven依赖 实际上是封装了jedis <!-- redis 依赖--> <dependency> < ...
- springboot redis工具类
package com.vv.boot.util; import java.util.List; import java.util.Map; import java.util.Set; import ...
随机推荐
- C++ STL之 map 学习笔记
•何为 map? map 是 STL 的一个关联容器,它提供一对一的数据处理,map 中存放的是一个 key-value键值对,其类型可以自己定义: 第一个可以称为关键字,每个关键字在 map 中只能 ...
- Spring多线程事务处理
一.背景 本文主要介绍了spring多线程事务的解决方案,心急的可以跳过上面的理论介绍分析部分直接看最终解决方案. 在我们日常的业务活动中,经常会出现大规模的修改插入操作,比如在3.0的活动赛事创建, ...
- python 读取串口数据常用函数及实例分析
前记: 人生苦短,我用python,python在做一些算法验证和接口验证方面,的确是非常的好用.读取串口经常用到,这里就做个总结,给自己和周围的人做个备忘吧. 函数解析: 初始化串口数据: impo ...
- 三种方式使用纯 CSS 实现星级评分
本文介绍三种使用纯 CSS 实现星级评分的方式.每种都值得细品一番~ 五角星取自 Element Plus 的 svg 资源 <svg xmlns="http://www.w3.org ...
- openlayers操作分享:如何从容的在vue中食用openlayers6
这篇文章,分享下我对openlayers的一些经验和理解,会夹杂大量搜索出来得文档,是我正式使用时可以实现的,废话不多说,我们从下载开始 一,openlayers安装且初始化地图 创建vue项目就省略 ...
- 记录转载:uni-app 请求 uni.request封装使用
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 对uni.request的一些共同参数进行简单的封装,减少重复性数据请求代码.方便全局调用. 先在目录下创建 utils 和 common ...
- 使用元类实现Django的ORM
一.ORM基本介绍 ORM 是 python编程语言后端web框架 Django的核心思想,"Object Relational Mapping",即对象-关系映射,简称ORM. ...
- ArcMap的mxd文件没有数据、显示感叹号怎么办?
本文介绍在ArcMap软件中,导入.mxd地图文档文件后图层出现感叹号.地图显示空白等情况的解决办法. 在ArcMap软件使用过程中,我们经常会需要将包含有多个图层的.mxd地图文档文件导入软 ...
- KingbaseES 中select for update语句引起的锁问题
背景 客户现场执行压测时候,发生周期性的TPS大幅下降,通过查看kwr报告发现DBcpu时间占DBtime时间很少,百分之90的DBtime花费在tuple锁等待上,等待事件类型是lock. 等待时间 ...
- KingbaseES V8R3集群运维案例之---主库数据库服务down后failover切换详解
案例说明: 对KingbaseES V8R3集群,主库数据库服务down后,failover切换进行分析,详解其执行切换的过程,本案例可用于对KingbaseES V8R3集群failover故障的分 ...