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);}}
}
Redis 工具类_慕课版本相关推荐
- SpringBoot整合Redis并实现Redis工具类
Redis 是用 C 语言开发的一款开源的.高性能的键值对存储数据库.它采用 BSD 协议,为了适应不同场景下的存储需求,提供了多种键值对类型,到目前为止 Redis 数据库支持5种数据类型,分别是S ...
- 基于Redis GEO(地理位置) 实现附近的人,商家等相关功能实现 使用SpringBoot Redis工具类
Redis GEO 1.基本介绍 1.Redis GEO 2.基础语法 GEOADD GEOPOS GEODIST GEORADIUS GEOHASH 2.可用于实现的功能 3.SpringBoot实 ...
- SpringBoot Redis工具类封装
SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable).看了很多博客后, ...
- Java封装redis工具类RedisUtils,以及在@Postconstruct注解中调用redis可能出现redisTemplate空指针异常
1.封装redis工具类RedisUtils import org.springframework.data.redis.core.RedisTemplate; import org.springfr ...
- Scala 连接Redis工具类
Scala使用工厂模式返回操作Redis集群的工具类 package come.gome.data.utilsimport redis.clients.jedis.{HostAndPort, Jedi ...
- Redis工具类的封装
Redis工具类的封装 <dependency><groupId>redis.clients</groupId><artifactId>jedis< ...
- Redis工具类封装讲解和实战
Redis工具类封装讲解和实战 简介:高效开发方式 Redis工具类封装讲解和实战 1.常用客户端 https://redisdesktop.com/download ...
- 工具类集和_gblfy版本
日常工具类集和 gblfy版本 Cookie CookieUtil.java BigDecimal BigDecimalUtil.java 日期 DateTimeUtil.java FTP FTPUt ...
- 基于jedis的Redis工具类
本文来记录下基于 jedis 的 Redis 工具类 文章目录 核心代码 核心代码 以下为核心代码 /*** 基于jedis的redis操作工具类* @author www* @time 2021/8 ...
最新文章
- ios开发判断字符串为空_【开发常识】这个问题,直接导致年终奖没了……(惨兮兮)...
- openMP 并行编程 基础
- python处理pdf提取指定数据_python从PDF中提取数据的示例
- [转]使用wget命令下载Google drive上的文件
- Redis分布式锁的实现原理
- 循环 直到 python_如果您在Python中存在慢循环,则可以对其进行修复……直到无法解决为止...
- matlab from有什么用,Matlab函数使用'fromworkspace'将向量传递给simulink
- javascript学习笔记_function
- Android 在popupWindow上用autoCompleteTextView报错(Android 6.0报错,8.0没有问题)
- 【DRP】【SQL】-悲观锁-防止多用户同时操作时出现脏数据
- Atitit 获取SqlSessionFactory的三种方式 目录 第一节 DataSource 方式	1 第二节 读取sprbt Url方式 ByteArrayInputStream	1 第三节
- 基于STM32电压检测和电流检测
- 认识COFF文件格式
- TotalCommander常用操作
- 3. pandas基础
- 厉害了,又一个资源神器
- 古有穷书生街中弄笔,今有弄潮儿网上卖字
- html+css+js简单实现图片轮播效果
- 扩展显示器失败:“显示信号输入超出范围“问题解决方案
- GE核磁共振常见术语
热门文章
- 快速排序 java导包_排序算法-快速排序(Java实现)
- 数据结构实验之查找六:顺序查找
- 算法6:只有五行的Floyd最短路算法
- 重构技术架构首先解决组织架构
- 玩转运维编排服务的权限:Assume Role+Pass Role
- 阿里专家杜万:Java响应式编程,一文全面解读
- 全新一代人工智能计算引擎MaxCompute杭州开服,强化阿里云大数据能力,比肩谷歌微软...
- 低代码发展专访系列之二:两三年内会出现“现象级”低代码产品吗?
- 这个宝藏工具,会给你一种黑客般的感觉
- 大厂技术文档:Python基础+爬虫+数据分析+面试经精选