redis工具类封装

各位读者,大家好!

本次给大家带来redis的封装类,可以很优雅的操作redis,本工具结合了springframework中的部分注解和类,适用于spring框架的项目使用。

首先,创建一个配置类ConstantConfig,可以很方便读取配置文件:

 1 package com.cheng2839.config;
 2
 3 import lombok.Data;
 4 import org.springframework.beans.factory.annotation.Value;
 5 import org.springframework.context.annotation.Configuration;
 6
 7 /**
 8  * 配置文件包装类
 9  * @author cheng2839
10  * @date 2018年11月16日
11  */
12 @Data
13 @Configuration
14 public class ConstantConfig {
15
16     /////////////////// redis配置  ///////////////////
17     @Value("${spring.redis.host}")
18     private String redisHost;
19
20     @Value("${spring.redis.port}")
21     private int redisPort;
22
23     @Value("${spring.redis.password}")
24     private String redisPassword;
25
26     @Value("${spring.redis.database}")
27     private int redisDatabase;
28
29 }

创建配置文件application.properties如下:

 1 # REDIS配置
 2 spring.redis.database=0
 3 spring.redis.host=127.0.0.1
 4 spring.redis.port=6379
 5 spring.redis.password=
 6 spring.redis.pool.max-active=200
 7 spring.redis.pool.max-wait=10000
 8 spring.redis.pool.max-idle=50
 9 spring.redis.pool.min-idle=5
10 spring.redis.timeout=10000

最后,redis配置类RedisConfig如下:

  1 package com.cheng2839.config;
  2
  3 import com.fasterxml.jackson.annotation.JsonAutoDetect;
  4 import com.fasterxml.jackson.annotation.PropertyAccessor;
  5 import com.fasterxml.jackson.databind.ObjectMapper;
  6 import org.slf4j.Logger;
  7 import org.slf4j.LoggerFactory;
  8 import org.springframework.beans.factory.annotation.Autowired;
  9 import org.springframework.cache.annotation.CachingConfigurerSupport;
 10 import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
 11 import org.springframework.data.redis.core.RedisTemplate;
 12 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
 13 import org.springframework.data.redis.serializer.StringRedisSerializer;
 14 import org.springframework.stereotype.Component;
 15
 16 import java.util.concurrent.TimeUnit;
 17
 18 /**
 19  * Redis配置及基础方法实现封装类
 20  * @author cheng2839
 21  * @date 2018年11月16日
 22  */
 23 @Component
 24 public class RedisConfig extends CachingConfigurerSupport {
 25
 26     private static final Logger logger = LoggerFactory.getLogger(RedisConfig.class);
 27
 28     @Autowired
 29     private ConstantConfig config;
 30
 31     private RedisTemplate<String, Object> redisTemplate;
 32
 33
 34     /**
 35      * 创建构造器, 不使用@Bean是因为禁止在其他地方注入JedisConnectionFactory和RedisTemplate
 36      * @author cheng2839
 37      * @date 2018年11月16日
 38      */
 39     public RedisConfig(){
 40         createRedisTemplate(createFactory());
 41     }
 42
 43     /**
 44      * 创建JedisConnectionFactory
 45      * @return
 46      * @author cheng2839
 47      * @date 2018年11月16日
 48      */
 49     public JedisConnectionFactory createFactory() {
 50         JedisConnectionFactory factory = new JedisConnectionFactory();
 51         factory.setHostName(config.getRedisHost());
 52         factory.setPort(config.getRedisPort());
 53         factory.setPassword(config.getRedisPassword());
 54         factory.setDatabase(config.getRedisDatabase());
 55         return factory;
 56     }
 57
 58     /**
 59      * 创建RedisTemplate
 60      * @param factory
 61      * @return
 62      */
 63     public RedisTemplate<String, Object> createRedisTemplate(JedisConnectionFactory factory) {
 64         redisTemplate = new RedisTemplate<>();
 65         redisTemplate.setConnectionFactory(factory);
 66
 67         //设置序列化/反序列化方式
 68         Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);
 69         ObjectMapper mapper = new ObjectMapper();
 70         mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
 71         mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
 72         serializer.setObjectMapper(mapper);
 73
 74         redisTemplate.setValueSerializer(serializer);
 75         redisTemplate.setKeySerializer(new StringRedisSerializer());
 76         redisTemplate.afterPropertiesSet();
 77         return redisTemplate;
 78     }
 79
 80
 81     //////////////////   下面为 Redis基础操作方法 可根据情况扩展  //////////////////
 82
 83     /**
 84      * 添加一个key,无过期时间
 85      * @param key
 86      * @param value
 87      * @author cheng2839
 88      * @date 2018年11月16日
 89      */
 90     public void set(String key, Object value) {
 91         logger.info("[redis.set:({},{})]", key, value);
 92         redisTemplate.opsForValue().set(key, value);
 93     }
 94
 95     /**
 96      * 添加一个key,并设置过期时间
 97      * @param key
 98      * @param value
 99      * @param time
100      * @param timeUnit
101      * @author cheng2839
102      * @date 2018年11月16日
103      */
104     public void set(String key, Object value, long time, TimeUnit timeUnit) {
105         logger.info("[redis.set:({},{})-({} {})]", key, value, time, timeUnit);
106         redisTemplate.opsForValue().set(key, value, time, timeUnit);
107     }
108
109     /**
110      * get redis value
111      * @param key
112      * @return
113      * @author cheng2839
114      * @date 2018年11月16日
115      */
116     public Object get(String key) {
117         logger.info("[redis.get:({})]", key);
118         return redisTemplate.opsForValue().get(key);
119     }
120
121     /**
122      * 设置key的过期时间
123      * @param key
124      * @param time
125      * @param timeUnit
126      * @author cheng2839
127      * @date 2018年11月16日
128      */
129     public void expire(String key, long time, TimeUnit timeUnit) {
130         logger.info("[redis.expire:({})-({} {})]", key, time, timeUnit);
131         redisTemplate.expire(key, time, timeUnit);
132     }
133
134     /**
135      * 删除key
136      * @param key
137      * @author cheng2839
138      * @date 2018年11月16日
139      */
140     public void delete(String key){
141         logger.info("[redis.delete:({})]", key);
142         redisTemplate.delete(key);
143     }
144
145     /**
146      * 判断key是否存在
147      * @param key
148      * @return
149      * @author cheng2839
150      * @date 2018年11月16日
151      */
152     public boolean hasKey(String key) {
153         logger.info("[redis.hasKey:({})]", key);
154         return redisTemplate.hasKey(key);
155     }
156
157     //////////////////   上面为 Redis基础操作方法 可根据情况扩展  //////////////////
158
159 }

使用也很方便,我们创建一个RedisTest测试类来测试一下:

 1 package com.cheng2839.test;
 2
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import com.cheng2839.config.RedisConfig;
 5
 6 public class RedisTest {
 7
 8     @Autowired
 9     private RedisConfig redisConfig;
10
11     public static void main(String[] args) {
12         String key = "cheng2839";
13         redisConfig.set(key, "这是我的博客");
14         Object val = redisConfig.get(key);
15         System.out.println("查询redis中的值:key:" + key + "\tvalue:" + val);
16
17         boolean hasKey = redisConfig.hasKey(key);
18         System.out.println("查询redis中key:" + key + ":" + hasKey);
19
20         redisConfig.delete(key);
21         val = redisConfig.get(key);
22         System.out.println("查询redis中的值:key:" + key + "\tvalue:" + val);
23     }
24
25 }

测试打印日志如下:

1 查询redis中的值:key:cheng2839    value:这是我的博客
2 查询redis中key:cheng2839:true
3 查询redis中的值:key:cheng2839    value:null

后续给大家带来redis的安装、部署、配置;包括集群的设置等

原文地址:https://www.cnblogs.com/cheng2839/p/12604124.html

时间: 2024-10-28 19:56:04

redis工具类封装的相关文章

单服务缓存redis工具类

import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * 单服务缓存redis工具类(需要额外jar包jedis) */ public class RedisSingletonPool { private static String ip = ConfigUtil.readConfigForObject("SIN

Redis 工具类

项目里的Redis 工具类,写下来以备后用 1 public class RedisConnector 2 { 3 public class RedisParseResult<T> 4 { 5 public bool success; 6 public T value; 7 } 8 private static string ConnectionString { get; set; } 9 private static ConnectionMultiplexer RedisConnection

redis工具类

import com.alibaba.fastjson.JSON; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.concurrent.TimeUnit; /** * Redis工具类 */ @Service public class

springboot2.2.2整合redis与redis 工具类大全

1.springboot2.2.2整合redis教程很多,为此编写了比较完整的redis工具类,符合企业级开发使用的工具类 2.springboot与redis maven相关的依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <

fastdfs-client-java工具类封装

FastDFS是通过StorageClient来执行上传操作的 通过看源码我们知道,FastDFS有两个StorageClient工具类. StorageClient的上传方法upload_file(...)返回的是字符串数组String[], 如[group1,M00/00/00/wKgAb1dBK2iANrayAA1rIuRd3Es112.jpg] StorageClient1的上传方法upload_file(...)返回的是字符串数组String, 如group1/M00/00/00/wK

【Cocos2d-x Lua】http工具类封装

实现 该工具类对Cocos2d-x中的HttpClient进行了封装,使可以在Lua中实现http异步请求. LuaHttpClient.h #ifndef __LUAHTTPCLIENT_H__ #define __LUAHTTPCLIENT_H__ #include "cocos2d.h" USING_NS_CC; #include "cocos-ext.h" USING_NS_CC_EXT; // 参数封装类 class LuaParams{ public:

utils部分--一些通用的工具类封装

1.简介 utils部分是对一些常用的工具类进行简单的封装,使用起来比较方便.这里列举常用的一些. 2.ContextUtils使用 主要封装了网络判断.一些方法解释如下: ? 1 2 3 4 5 6 7 8 //判断是否存在网络连接 public static boolean hasNetwork(Context context); //判断GPS是否打开 public static boolean isGpsEnabled(Context context); //SD卡是否可用 public

Android Sqlite 工具类封装

鉴于经常使用 Sqlite 数据库做数据持久化处理,进行了一点封装,方便使用. 该封装类主要支持一下功能 支持多用户数据储存 支持 Sqlite数据库升级 支持传入 Sql 语句建表 支持 SQLiteDatabase 基本操作.比如:execSQL.rawQuery.insert等等 解决了数据库并发问题 先贴上封装类代码 /** * * @ClassName: DataBaseOpenHelper * @Description: 数据库工具类 * @author lhy * @date 20

微信支付(二):工具类封装

package net.xdclass.xdvideo.utils; import java.security.MessageDigest; import java.util.UUID; /** * 常用工具类的封装,md5,uuid等 */ public class CommonUtils { /** * 生成 uuid, 即用来标识一笔单,也用做 nonce_str * @return */ public static String generateUUID(){ String uuid =