Redis当中用StringRedisTemplate封装好的工具类

2024-05-11 14:28

本文主要是介绍Redis当中用StringRedisTemplate封装好的工具类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、工具类的功能

2、导入依赖

2、具体代码


1、工具类的功能

  • 将字符串存入到redis当中
  • 将对象存入到redis当中
  • 将对象转化为HashMap存入到redis当中
  • 将对象转化为Set存入到redis当中
  • 将集合存入到redis当中
  • 取出各种存入到redis当中的数据 并做各种数据转换
  • 删除redis当中的数据
  • 设置过期时间和不设置过期时间

2、导入依赖

<!-- Hutool工具类 -->
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.17</version>
</dependency><!-- redis 缓存操作 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- pool 对象池 -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>

配置文件

spring:redis:host: 自己的ipport: 6379password: 自己的密码lettuce:pool:max-active: 8 # 最大连接数max-idle: 8   # 最大空闲连接min-idle: 0   # 最小空闲连接max-wait: 100 # 连接等待时间

 

2、具体代码

package com.hyh.ad.common.core.redis;import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;@Component
@Slf4j
public class CacheClient {@Autowiredprivate StringRedisTemplate stringRedisTemplate;/*** 存放不含过期时间的key** @param key*/public void setWithoutTime(String key, Object value) {stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(value));}/*** redis的set方法是一个字符串的存储方法** @param key:redis当中的唯一key,value:存储的值 类型为Object,time:过期时间,unit:时间单位*/public void setObject(String key, Object value, Long time, TimeUnit unit) {stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(value), time, unit);}/*** 获取key** @param key*/public String getObject(String key) {if (key == null) {throw new RuntimeException("key不能为空");}return stringRedisTemplate.opsForValue().get(key);}/*** 删除key** @param key*/public void delete(String key) {stringRedisTemplate.delete(key);}/*** 用map的形式存储数据 加上过期时间** @param key* @param value* @param time* @param unit*/public void setMap(String key, Object value, Long time, TimeUnit unit) {// 将对象转换为mapMap<String, Object> map = BeanUtil.beanToMap(value, new HashMap<>(),CopyOptions.create().setIgnoreNullValue(true).setFieldValueEditor((fieldName, fieldValue) -> {if (fieldValue == null)return null;return fieldValue.toString();}));// 存储mapstringRedisTemplate.opsForHash().putAll(key, map);// 设置过期时间stringRedisTemplate.expire(key, time, unit);}/*** 用map的形式存储数据** @param* @return*/public void setMapWithoutTime(String key, Object value) {// 将对象转换为mapMap<String, Object> map = BeanUtil.beanToMap(value, new HashMap<>(),CopyOptions.create().setIgnoreNullValue(true).setFieldValueEditor((fieldName, fieldValue) -> {if (fieldValue == null)return null;return fieldValue.toString();}));// 存储mapstringRedisTemplate.opsForHash().putAll(key, map);}/*** 获取map的数据** @param key* @param bean*/public <T> T getMap(String key, T bean) {if (key == null) {throw new RuntimeException("key不能为空");}Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries(key);// 将map转为beanreturn BeanUtil.fillBeanWithMap(entries, bean, false);}/*** 将list存储到redis当中 并且设置过期时间** @param key* @param list* @param time* @param unit*/public void setList(String key, List<?> list, Long time, TimeUnit unit) {ListOperations<String, String> opsForList = stringRedisTemplate.opsForList();for (Object o : list) {opsForList.rightPush(key, JSONUtil.toJsonStr(o));}stringRedisTemplate.expire(key, time, unit);}/*** 将list存储到redis当中** @param key* @param list*/public void setListWithoutTime(String key, List<?> list) {ListOperations<String, String> opsForList = stringRedisTemplate.opsForList();for (Object o : list) {opsForList.rightPush(key, JSONUtil.toJsonStr(o));}}/*** 获取list** @param key* @param clazz* @return*/public <T> List<T> getList(String key, Class<T> clazz) {if (key == null) {throw new RuntimeException("key不能为空");}ListOperations<String, String> opsForList = stringRedisTemplate.opsForList();List<String> range = opsForList.range(key, 0, -1);return BeanUtil.copyToList(range, clazz);}/*** 将对象存入到redis set集合中 并且设置过期时间** @param key* @param value* @param time* @param unit*/public void setSetWithoutTime(String key, Object value, Long time, TimeUnit unit) {stringRedisTemplate.opsForSet().add(key, JSONUtil.toJsonStr(value));stringRedisTemplate.expire(key, time, unit);}/*** 将对象存入到redis set集合中** @param key* @param value*/public void setSet(String key, Object value) {stringRedisTemplate.opsForSet().add(key, JSONUtil.toJsonStr(value));}/*** 获取set集合** @param key* @param clazz* @return*/public <T> List<T> getSet(String key, Class<T> clazz) {if (key == null) {throw new RuntimeException("key不能为空");}return BeanUtil.copyToList(stringRedisTemplate.opsForSet().members(key), clazz);}
}

这篇关于Redis当中用StringRedisTemplate封装好的工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979794

相关文章

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

使用python制作一款文件粉碎工具

《使用python制作一款文件粉碎工具》这篇文章主要为大家详细介绍了如何使用python制作一款文件粉碎工具,能够有效粉碎密码文件和机密Excel表格等,感兴趣的小伙伴可以了解一下... 文件粉碎工具:适用于粉碎密码文件和机密的escel表格等等,主要作用就是防止 别人用数据恢复大师把你刚删除的机密的文件恢