编写RedisUtil来操作Redis

2024-01-17 15:20
文章标签 操作 redis 编写 redisutil

本文主要是介绍编写RedisUtil来操作Redis,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

​编辑

Redis中文网

第一步:建springboot项目

第二步:导依赖

第三步:启动类

第四步:yml

第五步:Redis配置类

第六步:测试类

第七步:编写工具类 RedisUtil

第八步:编写和测试

普通缓存放入:String类型

获取指定 key 所储存的字符串值的长度

Get 命令用于获取指定 key 的值

Redis Incr 命令将 key 中储存的数字值增一。

Redis Decr 命令将 key 中储存的数字值减一。

普通缓存放入并设置时间

key 中储存的数字加上指定的增量值。

Redis Mget 命令返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。


Redis中文网

按这里面来编写

第一步:建springboot项目

第二步:导依赖

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.5</version><relativePath/></parent><groupId>com.itheima</groupId><artifactId>springdataredis_demo</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.5</version></plugin></plugins></build>
</project>

第三步:启动类

package com.itheima;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class,args);}}

第四步:yml

spring:application:name: springdataredis_demo#Redis相关配置redis:host: localhostport: 6379#password: 123456database: 0 #操作的是0号数据库jedis:#Redis连接池配置pool:max-active: 8 #最大连接数max-wait: 1ms #连接池最大阻塞等待时间max-idle: 4 #连接池中的最大空闲连接min-idle: 0 #连接池中的最小空闲连接

第五步:Redis配置类

package com.itheima.config;import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;/*** Redis配置类*/@Configuration
public class RedisConfig extends CachingConfigurerSupport {@Beanpublic RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();//默认的Key序列化器为:JdkSerializationRedisSerializer//设置新的y序列化器redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setConnectionFactory(connectionFactory);return redisTemplate;}}

第六步:测试类

package com.itheima.test;import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;/*** @Author lpc* @Date 2024 01 16 14 52**/@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisUtil {@Autowiredprivate RedisUtil redisUtil;}

第七步:编写工具类 RedisUtil

package com.itheima.utils;import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;import javax.annotation.Resource;/*** @Author lpc* @Date 2024 01 16 14 40**/@Component //是一个通用的Spring注解,用于将类标记为一个组件,使Spring容器能够自动检测并将其实例化为一个Spring Bean。
public class RedisUtil {/*** 这段代码实现了将一个用于操作Redis数据库的RedisTemplate对象注入到当前类中,以便于进行Redis相关操作。*/@Resourceprivate RedisTemplate<String, Object> redisTemplate;/*** 详解:* 1.创建一个RedisTemplate对象:通过将redisTemplate字段声明为RedisTemplate<String, Object>类型,可以创建一个用于操作Redis数据库的RedisTemplate对象。* 2.实现Redis操作:通过使用redisTemplate对象,您可以执行各种Redis操作,如插入数据、查询数据、更新数据等。由于字段的泛型参数是<String, Object>,这意味着Redis的Key是String类型,Value是Object类型。您可以根据需要进行类型转换。* 3.依赖注入:使用@Resource注解,将与RedisTemplate<String, Object>类型兼容的Bean注入到redisTemplate字段中。这意味着在Spring容器中配置了一个与RedisTemplate<String, Object>匹配的Bean,并且该Bean会在当前类的实例化过程中自动注入到redisTemplate字段上。*/// ============================String=============================/*** 普通缓存放入** @param key   键* @param value 值* @return true成功 false失败*/public boolean set(String key, Object value) {try {redisTemplate.opsForValue().set(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}}

第八步:编写和测试

普通缓存放入:String类型

这个提前开启

 @Testpublic void testString(){redisUtil.set("cosplay","liuhua");}

获取指定 key 所储存的字符串值的长度

  /*** 获取指定 key 所储存的字符串值的长度* @param key* @return*///Redis Strlen 命令用于获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。public Long strlen(String key){try{return redisTemplate.opsForValue().size(key);}catch (Exception e){e.printStackTrace();return null; // 或者抛出自定义的异常}}
 @Testpublic void testString(){redisUtil.set("cosplay","liuhua");System.out.println( redisUtil.strlen("cosplay"));}

Get 命令用于获取指定 key 的值

 //Redis Get 命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。/*** 普通缓存获取** @param key               键* @param* @return 值* 解释:如何key是null,就返回null; 不是就返回Redis里面的value*/public Object get(String key) {return key == null ? null : redisTemplate.opsForValue().get(key);}
 @Testpublic void testString(){redisUtil.set("cosplay","liuhua");System.out.println( redisUtil.strlen("cosplay"));System.out.println(redisUtil.get("cosplay"));}

Redis Incr 命令将 key 中储存的数字值增一。

 //Redis Incr 命令将 key 中储存的数字值增一。//如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。//如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。//本操作的值限制在 64 位(bit)有符号数字表示之内。/*** 递增** @param key   键* @param delta 要增加几(大于0)* @return*/public long incr(String key, long delta) {if (delta < 0) {throw new RuntimeException("递增因子必须大于0");}return redisTemplate.opsForValue().increment(key, delta);}
 @Testpublic void testString(){String key = "test_key";long delta = 1;// 调用递增方法long result = redisUtil.incr(key, delta);System.out.println(result);}

Redis Decr 命令将 key 中储存的数字值减一。

/* Redis Decr 命令将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。*//*** 递减** @param key   键* @param delta 要减少几(小于0)* @return*/public long decr(String key, long delta) {if (delta < 0) {throw new RuntimeException("递减因子必须大于0");}return redisTemplate.opsForValue().increment(key, -delta);}
 @Testpublic void testString2(){String key = "test_key2";long delta = 30;// 调用递增方法long result = redisUtil.decr(key, delta);System.out.println(result);}

普通缓存放入并设置时间

/*** 普通缓存放入并设置时间** @param key   键* @param value 值* @param time  时间(秒) time要大于0 如果time小于等于0 将设置无限期* @return true成功 false 失败*/public boolean set(String key, Object value, long time) {try {if (time > 0) {redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);} else {set(key, value);}return true;} catch (Exception e) {e.printStackTrace();return false;}}

key 中储存的数字加上指定的增量值。

 /*** Incrby 命令将 key 中储存的数字加上指定的增量值。* @param key* @param increment* @return* 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误:*/public long incrBy(String key, long increment) {try {return redisTemplate.opsForValue().increment(key, increment);} catch (Exception e) {e.printStackTrace();return 0; //返回一个0}}

Redis Mget 命令返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。

/*** mget 命令返回所有(一个或多个)给定 key 的值。* 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。* @param keys* @return*/public List<Object> mget(String... keys) {try {return redisTemplate.opsForValue().multiGet(Arrays.asList(keys));} catch (Exception e) {e.printStackTrace();return null;}}

Redis Getset 命令用于设置指定 key 的值,并返回 key 旧的值。

/*** 设置指定键的新值,并返回旧值** @param key   键* @param value 新值* @return 旧值*/public Object getSet(String key,Object value){try{return redisTemplate.opsForValue().getAndSet(key, value);}catch (Exception e){e.printStackTrace();return  null;}}

完整工具类

package com.itheima.utils;import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;/*** @Author lpc* @Date 2024 01 16 14 40**/@Component //是一个通用的Spring注解,用于将类标记为一个组件,使Spring容器能够自动检测并将其实例化为一个Spring Bean。
public class RedisUtil {/*** 这段代码实现了将一个用于操作Redis数据库的RedisTemplate对象注入到当前类中,以便于进行Redis相关操作。*/@Resourceprivate RedisTemplate<String, Object> redisTemplate;/*** 详解:* 1.创建一个RedisTemplate对象:通过将redisTemplate字段声明为RedisTemplate<String, Object>类型,可以创建一个用于操作Redis数据库的RedisTemplate对象。* 2.实现Redis操作:通过使用redisTemplate对象,您可以执行各种Redis操作,如插入数据、查询数据、更新数据等。由于字段的泛型参数是<String, Object>,这意味着Redis的Key是String类型,Value是Object类型。您可以根据需要进行类型转换。* 3.依赖注入:使用@Resource注解,将与RedisTemplate<String, Object>类型兼容的Bean注入到redisTemplate字段中。这意味着在Spring容器中配置了一个与RedisTemplate<String, Object>匹配的Bean,并且该Bean会在当前类的实例化过程中自动注入到redisTemplate字段上。*/// ============================String类型=============================//Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。/*** 普通缓存放入** @param key   键* @param value 值* @return true成功 false失败*/public boolean set(String key, Object value) {try {redisTemplate.opsForValue().set(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;}}//Redis Get 命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。/*** 普通缓存获取** @param key               键* @param* @return 值* 解释:如何key是null,就返回null; 不是就返回Redis里面的value*/public Object get(String key) {return key == null ? null : redisTemplate.opsForValue().get(key);}/*** 获取指定 key 所储存的字符串值的长度* @param key* @return*///Redis Strlen 命令用于获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。public Long strlen(String key){try{return redisTemplate.opsForValue().size(key);}catch (Exception e){e.printStackTrace();return null; // 或者抛出自定义的异常}}//Redis Incr 命令将 key 中储存的数字值增一。//如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。//如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。//本操作的值限制在 64 位(bit)有符号数字表示之内。/*** 递增** @param key   键* @param delta 要增加几(大于0)* @return*/public long incr(String key, long delta) {if (delta < 0) {throw new RuntimeException("递增因子必须大于0");}return redisTemplate.opsForValue().increment(key, delta);}/* Redis Decr 命令将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的值限制在 64 位(bit)有符号数字表示之内。*//*** 递减** @param key   键* @param delta 要减少几(小于0)* @return*/public long decr(String key, long delta) {if (delta < 0) {throw new RuntimeException("递减因子必须大于0");}return redisTemplate.opsForValue().increment(key, -delta);}/*** 普通缓存放入并设置时间** @param key   键* @param value 值* @param time  时间(秒) time要大于0 如果time小于等于0 将设置无限期* @return true成功 false 失败*/public boolean set(String key, Object value, long time) {try {if (time > 0) {redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);} else {set(key, value);}return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** Incrby 命令将 key 中储存的数字加上指定的增量值。* @param key* @param increment* @return* 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误:*/public long incrBy(String key, long increment) {try {return redisTemplate.opsForValue().increment(key, increment);} catch (Exception e) {e.printStackTrace();return 0; //返回一个0}}/*** mget 命令返回所有(一个或多个)给定 key 的值。* 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。* @param keys* @return*/public List<Object> mget(String... keys) {try {return redisTemplate.opsForValue().multiGet(Arrays.asList(keys));} catch (Exception e) {e.printStackTrace();return null;}}/*** 设置指定键的新值,并返回旧值** @param key   键* @param value 新值* @return 旧值*/public Object getSet(String key,Object value){try{return redisTemplate.opsForValue().getAndSet(key, value);}catch (Exception e){e.printStackTrace();return  null;}}}

这篇关于编写RedisUtil来操作Redis的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os