Redis 工具类_慕课版本

在这里插入图片描述

缓存Redis
Redis 连接池RedisPoolUtil.java
Redis 集群 连接RedisShardedPoolUtil.java
通用部分RedisPool.java
通用部分RedisShardedPool.java
通用部分RedissonManager.java
在这里插入代码片

RedisPoolUtil.java

package com.mmall.util;import com.mmall.common.RedisPool;
import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.Jedis;/*** Created by geely*/
@Slf4j
public class RedisPoolUtil {/*** 设置key的有效期,单位是秒* @param key* @param exTime* @return*/public static Long expire(String key,int exTime){Jedis jedis = null;Long result = null;try {jedis = RedisPool.getJedis();result = jedis.expire(key,exTime);} catch (Exception e) {log.error("expire key:{} error",key,e);RedisPool.returnBrokenResource(jedis);return result;}RedisPool.returnResource(jedis);return result;}//exTime的单位是秒public static String setEx(String key,String value,int exTime){Jedis jedis = null;String result = null;try {jedis = RedisPool.getJedis();result = jedis.setex(key,exTime,value);} catch (Exception e) {log.error("setex key:{} value:{} error",key,value,e);RedisPool.returnBrokenResource(jedis);return result;}RedisPool.returnResource(jedis);return result;}public static String set(String key,String value){Jedis jedis = null;String result = null;try {jedis = RedisPool.getJedis();result = jedis.set(key,value);} catch (Exception e) {log.error("set key:{} value:{} error",key,value,e);RedisPool.returnBrokenResource(jedis);return result;}RedisPool.returnResource(jedis);return result;}public static String get(String key){Jedis jedis = null;String result = null;try {jedis = RedisPool.getJedis();result = jedis.get(key);} catch (Exception e) {log.error("get key:{} error",key,e);RedisPool.returnBrokenResource(jedis);return result;}RedisPool.returnResource(jedis);return result;}public static Long del(String key){Jedis jedis = null;Long result = null;try {jedis = RedisPool.getJedis();result = jedis.del(key);} catch (Exception e) {log.error("del key:{} error",key,e);RedisPool.returnBrokenResource(jedis);return result;}RedisPool.returnResource(jedis);return result;}public static void main(String[] args) {Jedis jedis = RedisPool.getJedis();RedisShardedPoolUtil.set("keyTest","value");String value = RedisShardedPoolUtil.get("keyTest");RedisShardedPoolUtil.setEx("keyex","valueex",60*10);RedisShardedPoolUtil.expire("keyTest",60*20);RedisShardedPoolUtil.del("keyTest");String aaa = RedisShardedPoolUtil.get(null);System.out.println(aaa);System.out.println("end");}
}

RedisShardedPoolUtil.java

package com.mmall.util;import com.mmall.common.RedisShardedPool;
import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.ShardedJedis;/*** Created by geely*/
@Slf4j
public class RedisShardedPoolUtil {/*** 设置key的有效期,单位是秒* @param key* @param exTime* @return*/public static Long expire(String key,int exTime){ShardedJedis jedis = null;Long result = null;try {jedis = RedisShardedPool.getJedis();result = jedis.expire(key,exTime);} catch (Exception e) {log.error("expire key:{} error",key,e);RedisShardedPool.returnBrokenResource(jedis);return result;}RedisShardedPool.returnResource(jedis);return result;}//exTime的单位是秒public static String setEx(String key,String value,int exTime){ShardedJedis jedis = null;String result = null;try {jedis = RedisShardedPool.getJedis();result = jedis.setex(key,exTime,value);} catch (Exception e) {log.error("setex key:{} value:{} error",key,value,e);RedisShardedPool.returnBrokenResource(jedis);return result;}RedisShardedPool.returnResource(jedis);return result;}public static String set(String key,String value){ShardedJedis jedis = null;String result = null;try {jedis = RedisShardedPool.getJedis();result = jedis.set(key,value);} catch (Exception e) {log.error("set key:{} value:{} error",key,value,e);RedisShardedPool.returnBrokenResource(jedis);return result;}RedisShardedPool.returnResource(jedis);return result;}public static String getSet(String key,String value){ShardedJedis jedis = null;String result = null;try {jedis = RedisShardedPool.getJedis();result = jedis.getSet(key,value);} catch (Exception e) {log.error("getset key:{} value:{} error",key,value,e);RedisShardedPool.returnBrokenResource(jedis);return result;}RedisShardedPool.returnResource(jedis);return result;}public static String get(String key){ShardedJedis jedis = null;String result = null;try {jedis = RedisShardedPool.getJedis();result = jedis.get(key);} catch (Exception e) {log.error("get key:{} error",key,e);RedisShardedPool.returnBrokenResource(jedis);return result;}RedisShardedPool.returnResource(jedis);return result;}public static Long del(String key){ShardedJedis jedis = null;Long result = null;try {jedis = RedisShardedPool.getJedis();result = jedis.del(key);} catch (Exception e) {log.error("del key:{} error",key,e);RedisShardedPool.returnBrokenResource(jedis);return result;}RedisShardedPool.returnResource(jedis);return result;}public static Long setnx(String key,String value){ShardedJedis jedis = null;Long result = null;try {jedis = RedisShardedPool.getJedis();result = jedis.setnx(key,value);} catch (Exception e) {log.error("setnx key:{} value:{} error",key,value,e);RedisShardedPool.returnBrokenResource(jedis);return result;}RedisShardedPool.returnResource(jedis);return result;}public static void main(String[] args) {ShardedJedis jedis = RedisShardedPool.getJedis();RedisPoolUtil.set("keyTest","value");String value = RedisPoolUtil.get("keyTest");RedisPoolUtil.setEx("keyex","valueex",60*10);RedisPoolUtil.expire("keyTest",60*20);RedisPoolUtil.del("keyTest");String aaa = RedisPoolUtil.get(null);System.out.println(aaa);System.out.println("end");}
}

通用部分:
RedisShardedPool.java

package com.mmall.common;import com.mmall.util.PropertiesUtil;
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;
import redis.clients.util.Hashing;
import redis.clients.util.Sharded;import java.util.ArrayList;
import java.util.List;/*** Created by geely*/
public class RedisShardedPool {private static ShardedJedisPool pool;//sharded jedis连接池private static Integer maxTotal = Integer.parseInt(PropertiesUtil.getProperty("redis.max.total","20")); //最大连接数private static Integer maxIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.max.idle","20"));//在jedispool中最大的idle状态(空闲的)的jedis实例的个数private static Integer minIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.min.idle","20"));//在jedispool中最小的idle状态(空闲的)的jedis实例的个数private static Boolean testOnBorrow = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.borrow","true"));//在borrow一个jedis实例的时候,是否要进行验证操作,如果赋值true。则得到的jedis实例肯定是可以用的。private static Boolean testOnReturn = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.return","true"));//在return一个jedis实例的时候,是否要进行验证操作,如果赋值true。则放回jedispool的jedis实例肯定是可以用的。private static String redis1Ip = PropertiesUtil.getProperty("redis1.ip");private static Integer redis1Port = Integer.parseInt(PropertiesUtil.getProperty("redis1.port"));private static String redis2Ip = PropertiesUtil.getProperty("redis2.ip");private static Integer redis2Port = Integer.parseInt(PropertiesUtil.getProperty("redis2.port"));private static void initPool(){JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(maxTotal);config.setMaxIdle(maxIdle);config.setMinIdle(minIdle);config.setTestOnBorrow(testOnBorrow);config.setTestOnReturn(testOnReturn);config.setBlockWhenExhausted(true);//连接耗尽的时候,是否阻塞,false会抛出异常,true阻塞直到超时。默认为true。JedisShardInfo info1 = new JedisShardInfo(redis1Ip,redis1Port,1000*2);JedisShardInfo info2 = new JedisShardInfo(redis2Ip,redis2Port,1000*2);List<JedisShardInfo> jedisShardInfoList = new ArrayList<JedisShardInfo>(2);jedisShardInfoList.add(info1);jedisShardInfoList.add(info2);pool = new ShardedJedisPool(config,jedisShardInfoList, Hashing.MURMUR_HASH, Sharded.DEFAULT_KEY_TAG_PATTERN);}static{initPool();}public static ShardedJedis getJedis(){return pool.getResource();}public static void returnBrokenResource(ShardedJedis jedis){pool.returnBrokenResource(jedis);}public static void returnResource(ShardedJedis jedis){pool.returnResource(jedis);}public static void main(String[] args) {ShardedJedis jedis = pool.getResource();for(int i =0;i<10;i++){jedis.set("key"+i,"value"+i);}returnResource(jedis);//        pool.destroy();//临时调用,销毁连接池中的所有连接System.out.println("program is end");}
}

RedisPool.java

package com.mmall.common;import com.mmall.util.PropertiesUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;/*** Created by geely*/
public class RedisPool {private static JedisPool pool;//jedis连接池private static Integer maxTotal = Integer.parseInt(PropertiesUtil.getProperty("redis.max.total","20")); //最大连接数private static Integer maxIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.max.idle","20"));//在jedispool中最大的idle状态(空闲的)的jedis实例的个数private static Integer minIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.min.idle","20"));//在jedispool中最小的idle状态(空闲的)的jedis实例的个数private static Boolean testOnBorrow = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.borrow","true"));//在borrow一个jedis实例的时候,是否要进行验证操作,如果赋值true。则得到的jedis实例肯定是可以用的。private static Boolean testOnReturn = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.return","true"));//在return一个jedis实例的时候,是否要进行验证操作,如果赋值true。则放回jedispool的jedis实例肯定是可以用的。private static String redisIp = PropertiesUtil.getProperty("redis.ip");private static Integer redisPort = Integer.parseInt(PropertiesUtil.getProperty("redis.port"));private static void initPool(){JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(maxTotal);config.setMaxIdle(maxIdle);config.setMinIdle(minIdle);config.setTestOnBorrow(testOnBorrow);config.setTestOnReturn(testOnReturn);config.setBlockWhenExhausted(true);//连接耗尽的时候,是否阻塞,false会抛出异常,true阻塞直到超时。默认为true。pool = new JedisPool(config,redisIp,redisPort,1000*2);}static{initPool();}public static Jedis getJedis(){return pool.getResource();}public static void returnBrokenResource(Jedis jedis){pool.returnBrokenResource(jedis);}public static void returnResource(Jedis jedis){pool.returnResource(jedis);}public static void main(String[] args) {Jedis jedis = pool.getResource();jedis.set("geelykey","geelyvalue");returnResource(jedis);pool.destroy();//临时调用,销毁连接池中的所有连接System.out.println("program is end");}
}

RedissonManager.java

package com.mmall.common;import com.mmall.util.PropertiesUtil;
import lombok.extern.slf4j.Slf4j;
import org.redisson.Redisson;
import org.redisson.config.Config;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;/*** Created by geely*/
@Component
@Slf4j
public class RedissonManager {private Config config = new Config();private Redisson redisson = null;public Redisson getRedisson() {return redisson;}private static String redis1Ip = PropertiesUtil.getProperty("redis1.ip");private static Integer redis1Port = Integer.parseInt(PropertiesUtil.getProperty("redis1.port"));private static String redis2Ip = PropertiesUtil.getProperty("redis2.ip");private static Integer redis2Port = Integer.parseInt(PropertiesUtil.getProperty("redis2.port"));@PostConstructprivate void init(){try {config.useSingleServer().setAddress(new StringBuilder().append(redis1Ip).append(":").append(redis1Port).toString());redisson = (Redisson) Redisson.create(config);log.info("初始化Redisson结束");} catch (Exception e) {log.error("redisson init error",e);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云有约 | 在去O的道路上,AWS表示:经验可复制,惊喜并非只属于我们!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;刘晶晶一直以来&#xff0c;在云计算领域&#xff0c;AWS虽然遥遥领先&#xff0c;但是后有追兵无数&#xff0c;前方却从未有人带带路&#xff0c;想要“偷懒”借鉴学习一下&#xff0c;绝对不能够。一直以来&…

IOS OpenGL ES GPUImage 图像减淡混合 GPUImageLightenBlendFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

IOS OpenGL ES GPUImage 图像源混合 GPUImageSourceOverBlendFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

微服务与单体架构:IT变革中企业及个体如何自处?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;DAN KUSNETZKY转自&#xff1a;RancherLabs当下&#xff0c;企业越来越多地受到竞争对手和他们自己的客户的压力&#xff0c;既需要让应用程序更快地在线运行&#xff0c;同时又要最大限度地降低开发成本。这些不同…

玩转微服务日志框架Logback

一、Logback的配置形式2种&#xff1a; 方案一&#xff1a; application.yml 配置相对简单(需求简单可以使用) 1、可以配置控制台输出的日志格式 例如&#xff1a; 2、可以指定输出到某个路径下面&#xff0c;文件名默认是spring.log 3、如果想可以自定义log日志的文件名…

边缘计算精华问答 | 边缘计算有哪些应用场景?

物联网对物联网技术的快速发展和云服务的推动使得云计算模型已经不能很好的解决现在的问题&#xff0c;于是&#xff0c;这里给出一种新型的计算模型&#xff0c;边缘计算。1Q&#xff1a;什么是边缘计算&#xff1f;A&#xff1a;一般来讲&#xff0c;边缘计算侧重在更为靠近用…

IOS OpenGL ES GPUImage 图像平移 GPUImageTransformFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

Windows搭建SonarQube_Mysql

一、环境参数&#xff1a; softwareversionJDKjdk-8u144-windows-x64.tarSonarQubesonarqube-7.6sonar-runnersonar-runner-dist-2.4汉化插件sonar-l10n-zh-plugin-1.26.jarmysqlmysql-5.7.26-winx64sonar有三部分组成&#xff1a; 1、服务端&#xff1a;显示分析结果和sonar相…

IOS OpenGL ES GPUImage 图像缩放 GPUImageTransformFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

window下远程监控linux下tomcat的jvm

简要介绍&#xff1a; 理论上来讲,任何一个运行的java程序都可以监控当前正在运行的java虚拟机的内存,堆空间,栈空间等信息.tomcat本质也是运行在linux上的java程序,通过一定的配置也可以实现监控tomcat对应程序的jvm的空间。 配置方法: 1.停止linux上的tomcat2.编辑bin路径下…

云有约 | 精华汇总

出品 | CSDN云计算 云有约&#xff0c;面对面采访&#xff0c;用最细腻的方式&#xff0c;撰写出最专业的深度文章。 云有约 | 在去O的道路上&#xff0c;AWS表示&#xff1a;经验可复制&#xff0c;惊喜并非只属于我们&#xff01; 一直以来&#xff0c;挑战数据库霸主Oracl…

Tomcat闪退的解决办法

第一步&#xff1a;在startup.bat文件最后添加pause&#xff0c;启动查看问题原因&#xff1a; 第二步&#xff1a;在startup.bat文件开头添加&#xff0c;如图所示&#xff1a; set TITLE"tomcat-8091" set CATALINA_BASE"F:\NOT MODIFIED\tomcat-8091"…

IOS OpenGL ES GPUImage 图像镜像 GPUImageTransformFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

云重磅 | 没有硬件,苹果发布多款“云服务”;阿里云发布基于公共云的虚拟GPU服务;中国移动首发5G套餐...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周二第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

Errors while executing git --version. exitCode=128 errors: fatal: open /dev/null or dup failed: No s

Errors while executing git --version. exitCode128 errors: fatal: open /dev/null or dup failed: No such file or directory 1、找到开发文档null.sys文件&#xff0c;复制到下面路径&#xff0c;覆盖此文件即可&#xff0c;解决 链接&#xff1a;https://pan.baidu.com…

IOS OpenGL ES GPUImage 图像旋转 GPUImageTransformFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

深挖Kubernetes存储为何如此难及其解决方案

戳蓝字“CSDN云计算”关注我们哦&#xff01;译者&#xff1a;韦峻峰转自&#xff1a;RancherLabs以Kubernetes为代表的容器编排工具在应用开发部署领域起正发挥着颠覆性的变革作用。随着微服务架构的发展&#xff0c;从开发人员的角度来看&#xff0c;应用逻辑架构与基础设施架…

windows10为何鼠标右键一点桌面就一直转圈?

windows10为何鼠标右键一点桌面就一直转圈&#xff1f; 文章目录解决方案&#xff1a;第一步&#xff1a;点击运行(winr)第二步&#xff1a;然后输入regedit&#xff0c;点击确定第三步&#xff1a;然后点开HKEY_CLASSES_ROOT第四步&#xff1a;然后找到HKEY_CLASSES_ROOT\Dire…

IOS OpenGL ES GPUImage 色彩加深混合 GPUImageColorBurnBlendFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

虚拟化精华问答 | 怎样使虚拟机能够达到比较高的IO性能?

虚拟化是一种资源管理技术, 是将计算机的各种物理资源, 如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破物理设备结构间的不可切割的障碍&#xff0c;使用户可以比原本的架构更好的方式来应用这些资源。这些资源的虚拟部分是不受现有资源的…