java实现redis工具类及其调用
网上很多redis工具类需要配套ssm,spring等,这是一套可以直接用的redis取参数的工具类(String类型)
一.jedis-2.1.0.jar下载,放到项目的lib下
网盘地址(4tn5)
二.redis的配置
目录结构推荐
在conf.properties里配置redis信息
redis-server=127.0.0.1
redis-port=根据自己配置
redis-passwd=gg思密达
三.redis的工具类RedisClient.java(自己建包)
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;public class RedisClient {private static Log log=LogFactory.getLog(RedisClient.class);private Jedis jedis;//非切片额客户端连接private JedisPool jedisPool;//非切片连接池private ShardedJedis shardedJedis;//切片额客户端连接private ShardedJedisPool shardedJedisPool;//切片连接池private String redisServer = getConfigAttr("conf.properties","redis-server");private String redisPort = getConfigAttr("conf.properties","redis-port");private String passwd = getConfigAttr("conf.properties","redis-passwd");private static final String defaultServerIp = "127.0.0.1";//如果没有配置地址,默认为本机地址public RedisClient() { initServerPort();initialPool(); initialShardedPool(); shardedJedis = shardedJedisPool.getResource(); jedis = jedisPool.getResource();jedis.auth(passwd);} private void initServerPort(){if("".equals(redisServer) || redisServer==null){redisServer = defaultServerIp;}if("".equals(redisPort) || redisPort==null){redisPort = "6379";}}/*** 初始化非切片池*/private void initialPool() { // 池基本配置 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(20); config.setMaxIdle(5); config.setMaxWait(1000l); config.setTestOnBorrow(false); jedisPool = new JedisPool(config,redisServer,Integer.parseInt(redisPort),100000);}/** * 初始化切片池 */ private void initialShardedPool() { // 池基本配置 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(20); config.setMaxIdle(5); config.setMaxWait(1000l); config.setTestOnBorrow(false); // slave链接 List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(); JedisShardInfo jedisShardInfo= new JedisShardInfo(redisServer,Integer.parseInt(redisPort),100000,"master");jedisShardInfo.setPassword(passwd);shards.add(jedisShardInfo);// 构造池 shardedJedisPool = new ShardedJedisPool(config, shards); } public void cacheRecord(Map<String, String> map){Set<Map.Entry<String, String>> entrySet = map.entrySet();//将关系集合entrySet进行迭代,存放到迭代器中 Iterator<Map.Entry<String, String>> it2 = entrySet.iterator();while(it2.hasNext()){Map.Entry<String, String> me = it2.next();//获取Map.Entry关系对象meString key = me.getKey();//通过关系对象获取keyString value = me.getValue();//通过关系对象获取valueshardedJedis.set(key, value); }}public void delCacheList(List<String> list){for(String s:list){jedis.del(s);}}public boolean isExist(String s){return jedis.exists(s);}public String getValue(String s){return jedis.get(s);}public void destroy(){jedisPool.returnResource(jedis);shardedJedisPool.returnResource(shardedJedis);}private String getConfigAttr(String propfile,String attr){InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(propfile); Properties p = new Properties(); try { p.load(inputStream); } catch (IOException e) {if(log.isErrorEnabled()){log.error(e);}} catch (Exception e) {if(log.isErrorEnabled()){log.error(e);}}finally{if(p.isEmpty()){try {inputStream.close();} catch (IOException e) {if(log.isErrorEnabled()){log.error(e);}} catch (Exception e) {if(log.isErrorEnabled()){log.error(e);}}}} String attrValue = p.getProperty(attr); return attrValue;}/*** 获取jedis* @return the jedis*/public Jedis getJedis() {return jedis;}/*** 设置jedis* @param jedis the jedis to set*/public void setJedis(Jedis jedis) {this.jedis = jedis;}}
四.取用redis的参数
RedisClient redisClientPc = new RedisClient();
String aaa = redisClientPc.getValue("aaa") == null ? "" : redisClientPc.getValue("aaa");
在这里想吐槽一句:学习成本变高了,动不动要c币,太难了
java实现redis工具类及其调用相关推荐
- Java封装redis工具类RedisUtils,以及在@Postconstruct注解中调用redis可能出现redisTemplate空指针异常
1.封装redis工具类RedisUtils import org.springframework.data.redis.core.RedisTemplate; import org.springfr ...
- SpringBoot整合Redis并实现Redis工具类
Redis 是用 C 语言开发的一款开源的.高性能的键值对存储数据库.它采用 BSD 协议,为了适应不同场景下的存储需求,提供了多种键值对类型,到目前为止 Redis 数据库支持5种数据类型,分别是S ...
- Java开发中的工具类——基于JedisPool的Redis工具类
目录 一.Maven依赖 二.Redis配置类 三.使用@Cacheable注解进行数据缓存 四.自定义Redis工具类及使用 4.1 序列化工具类 4.2 redis客户端工具类 4.3 redis ...
- Spring MVC普通类或工具类中调用service报空空指针的解决办法(调用service报java.lang.NullPointerException)...
当我们在非Controller类中应用service的方法是会报空指针,如图: 这是因为Spring MVC普通类或工具类中调用service报空null的解决办法(调用service报java.la ...
- Spring MVC普通类或工具类中调用service报空空指针的解决办法(调用service报java.lang.NullPointerException)
当我们在非Controller类中应用service的方法是会报空指针,如图: 这是因为Spring MVC普通类或工具类中调用service报空null的解决办法(调用service报java.la ...
- 整理Java相关的工具类Utils,持续更新中,建议收藏【目前更新至24】
文章目录 1.BigDecimalUtil 2.CaptchaUtil 图片验证码工具类 3.CoordinateTransformUtil 坐标系转换工具类 4.DateUtil 日期加减工具类 5 ...
- Redis(七) - 封装Redis工具类
文章目录 一.封装Redis工具类 1. 使用构造方法注入StringRedisTemplate 2. 方法1:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置TTL ...
- Redis工具类封装RedisUtils(两种)
RedisTemplate工具类1 本文参考:https://blog.it-follower.com/posts/2563248908.html SpringBoot项目集成Redis相当简单,只需 ...
- 动态代理模式_应用(Redis工具类)
本次使用动态代理的初衷是学习Redis,使用Java操作Redis时用到Jedis的JedisPool,而后对Jedis的方法进一步封装完善成为一个工具类. 因为直接使用Jedis对象时,为了保证性能 ...
最新文章
- 如何在CPU上优化GEMM矩阵乘法
- 国民技术芯片相关产业研发
- TCP/IP详解--学习笔记(7)-广播和多播,IGMP协议
- centos mysql5.7主从同步配置_centos7搭建mysql5.7主从同步
- 从Gmail故障看SaaS的服务风险
- linkedblockingqueue 后 take 不消化_消化不良的成因及护理
- Bootstrap3 价格滑动块 price range bootstrap-slider
- python概率游戏_看得见概率,可视化讲解概率学基础(附带python代码)
- 查看crontab的执行日志
- LeetCode之验证二叉搜索树
- 同余方程-NOIP2012TGD2T1
- 父与子编程之旅第十章pygame下载+安装+pip更新
- QQ的DLL文件修改大全!
- 【真题21套】计算机二级公共基础知识选择题真题【含解析】
- python调用webservice服务
- (20)雅思屠鸭第二十天:雅思听力part1中各种场景词的总结
- nltk,wordnet安装时出现问题关于omw-1.4
- 使用树莓派3B+ 制作一个属于自己的无线AP 无线路由器 一个Wi-Fi热点
- 小狗钱钱:钱钱的金钱语录
- 家具力学性能测试软件,家具力学性能
热门文章
- Docker踩坑笔记 - 解决Docker下载速度超级慢的问题
- Ubuntu安装QT Creater和配置
- 晋升答辩,leader嫡系拿着我和另一个同事的项目去答辩,关键我们三个人是同一组答辩,这也太恶心了吧?...
- 通达信自动交易系统接口安装方式
- Repair Pipelining for Erasure-Coded Storage(ATC‘17)
- 交通银行23春招 软开 面经
- 前端成神之路-阿里百秀
- python 表示图论_python与图论的桥梁——igraph
- Nginx 网络事件模型
- 栈的应用——表达式求值