缓存 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 工具类_慕课版本相关推荐

  1. SpringBoot整合Redis并实现Redis工具类

    Redis 是用 C 语言开发的一款开源的.高性能的键值对存储数据库.它采用 BSD 协议,为了适应不同场景下的存储需求,提供了多种键值对类型,到目前为止 Redis 数据库支持5种数据类型,分别是S ...

  2. 基于Redis GEO(地理位置) 实现附近的人,商家等相关功能实现 使用SpringBoot Redis工具类

    Redis GEO 1.基本介绍 1.Redis GEO 2.基础语法 GEOADD GEOPOS GEODIST GEORADIUS GEOHASH 2.可用于实现的功能 3.SpringBoot实 ...

  3. SpringBoot Redis工具类封装

    SpringBoot整合Redis的博客很多,但是很多都不是我想要的结果.因为我只需要整合完成后,可以操作Redis就可以了,并不需要配合缓存相关的注解使用(如@Cacheable).看了很多博客后, ...

  4. Java封装redis工具类RedisUtils,以及在@Postconstruct注解中调用redis可能出现redisTemplate空指针异常

    1.封装redis工具类RedisUtils import org.springframework.data.redis.core.RedisTemplate; import org.springfr ...

  5. Scala 连接Redis工具类

    Scala使用工厂模式返回操作Redis集群的工具类 package come.gome.data.utilsimport redis.clients.jedis.{HostAndPort, Jedi ...

  6. Redis工具类的封装

    Redis工具类的封装 <dependency><groupId>redis.clients</groupId><artifactId>jedis< ...

  7. Redis工具类封装讲解和实战

    Redis工具类封装讲解和实战     简介:高效开发方式 Redis工具类封装讲解和实战         1.常用客户端 https://redisdesktop.com/download      ...

  8. 工具类集和_gblfy版本

    日常工具类集和 gblfy版本 Cookie CookieUtil.java BigDecimal BigDecimalUtil.java 日期 DateTimeUtil.java FTP FTPUt ...

  9. 基于jedis的Redis工具类

    本文来记录下基于 jedis 的 Redis 工具类 文章目录 核心代码 核心代码 以下为核心代码 /*** 基于jedis的redis操作工具类* @author www* @time 2021/8 ...

最新文章

  1. ios开发判断字符串为空_【开发常识】这个问题,直接导致年终奖没了……(惨兮兮)...
  2. openMP 并行编程 基础
  3. python处理pdf提取指定数据_python从PDF中提取数据的示例
  4. [转]使用wget命令下载Google drive上的文件
  5. Redis分布式锁的实现原理
  6. 循环 直到 python_如果您在Python中存在慢循环,则可以对其进行修复……直到无法解决为止...
  7. matlab from有什么用,Matlab函数使用'fromworkspace'将向量传递给simulink
  8. javascript学习笔记_function
  9. Android 在popupWindow上用autoCompleteTextView报错(Android 6.0报错,8.0没有问题)
  10. 【DRP】【SQL】-悲观锁-防止多用户同时操作时出现脏数据
  11. Atitit 获取SqlSessionFactory的三种方式 目录 第一节 DataSource 方式 1 第二节 读取sprbt Url方式 ByteArrayInputStream 1 第三节
  12. 基于STM32电压检测和电流检测
  13. 认识COFF文件格式
  14. TotalCommander常用操作
  15. 3. pandas基础
  16. 厉害了,又一个资源神器
  17. 古有穷书生街中弄笔,今有弄潮儿网上卖字
  18. html+css+js简单实现图片轮播效果
  19. 扩展显示器失败:“显示信号输入超出范围“问题解决方案
  20. GE核磁共振常见术语

热门文章

  1. 快速排序 java导包_排序算法-快速排序(Java实现)
  2. 数据结构实验之查找六:顺序查找
  3. 算法6:只有五行的Floyd最短路算法
  4. 重构技术架构首先解决组织架构
  5. 玩转运维编排服务的权限:Assume Role+Pass Role
  6. 阿里专家杜万:Java响应式编程,一文全面解读
  7. 全新一代人工智能计算引擎MaxCompute杭州开服,强化阿里云大数据能力,比肩谷歌微软...
  8. 低代码发展专访系列之二:两三年内会出现“现象级”低代码产品吗?
  9. 这个宝藏工具,会给你一种黑客般的感觉
  10. 大厂技术文档:Python基础+爬虫+数据分析+面试经精选