使用SpringDataRedis操作Redis

2024-01-11 12:52

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

Redis的java客户端

  • jedis
  • Lettuce
  • Spring Data Redis

Spring Data redis 是Spring的一部分,对 Redis 底层开发包进行了高度封装。在Spring项目中,可以使用Spring Data Redis来简化操作。

Spring Data Redis使用方式

操作步骤:

  • 导入Spring Data Redis 的 maven 坐标
  • 配置Redis的数据源
  • 编写配置类,创建RedisTemplate对象
  • 通过RedisTemplate对象操作Redis

1、导入Spring Data Redis 的 maven 坐标

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

2、配置Redis的数据源

spring:redis:host: 127.0.0.1port: 6379database: 1

3、编写配置类,创建RedisTemplate对象

package top.suweijie.redis.config;import cn.hutool.db.nosql.redis.RedisDS;
import lombok.extern.slf4j.Slf4j;
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;/*** @Author suweijie* @Date 2024/1/9 17:01* @Description: TODO* @Version 1.0*/
@Slf4j
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {log.info("redisTemplate init...");RedisTemplate redisTemplate = new RedisTemplate();redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setConnectionFactory(redisConnectionFactory);return redisTemplate;}}

4、通过RedisTemplate操作Redis

package top.suweijie.redis;import jdk.nashorn.internal.runtime.regexp.joni.constants.OPSize;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.*;
import org.springframework.test.context.junit4.SpringRunner;import java.util.List;
import java.util.concurrent.TimeUnit;/*** @Author suweijie* @Date 2024/1/9 17:05* @Description: TODO* @Version 1.0*/
@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void test1() {ValueOperations stringObjectValueOperations = redisTemplate.opsForValue();HashOperations stringObjectObjectHashOperations = redisTemplate.opsForHash();ListOperations stringObjectListOperations = redisTemplate.opsForList();SetOperations setOperations = redisTemplate.opsForSet();ZSetOperations zSetOperations = redisTemplate.opsForZSet();}
}

操作字符串

 @Testpublic void dealString() {//set key valueredisTemplate.opsForValue().set("name","suweijie");//get keyString name = (String)redisTemplate.opsForValue().get("name");//setex key seconds valueredisTemplate.opsForValue().set("name","suweijie",60,TimeUnit.SECONDS);//setnx key valueredisTemplate.opsForValue().setIfAbsent("name","suweijie");redisTemplate.delete("name");}

操作哈希

@Testpublic void dealHash() {//hset key field valueredisTemplate.opsForHash().put("user","name","suweijie");redisTemplate.opsForHash().put("user","age","20");//hget key fieldString  name = (String)redisTemplate.opsForHash().get("user","name");log.info(name);//hdel key fieldredisTemplate.opsForHash().delete("user","age");//hkeys keySet keys = redisTemplate.opsForHash().keys("user");keys.forEach(System.out::println);//hvals keyList values = redisTemplate.opsForHash().values("user");values.forEach(System.out::println);}

操作列表

 @Testpublic void dealList() {//lpush key value1 value2redisTemplate.opsForList().leftPushAll("list","4","3","2","1");//lrange key start endList list = redisTemplate.opsForList().range("list", 0, -1);list.forEach(System.out::println);//rpop  keyString rightPop = (String) redisTemplate.opsForList().rightPop("list");log.info(rightPop);//llen keyLong size = redisTemplate.opsForList().size("list");log .info(size + "");}

操作集合

 @Testpublic void dealSet() {//sadd key member1 member2redisTemplate.opsForSet().add("set1","1","2","3","2");redisTemplate.opsForSet().add("set2","1","2","2","4");log.info("-------------------------------------------------");//smembers keySet set = redisTemplate.opsForSet().members("set1");set.forEach(System.out::println);log.info("-------------------------------------------------");//scard keyLong size = redisTemplate.opsForSet().size("set2");log.info(size + "");log.info("-------------------------------------------------");//sinter key1 key2Set intersect = redisTemplate.opsForSet().intersect("set1", "set2");intersect.forEach(System.out::println);log.info("-------------------------------------------------");Set union = redisTemplate.opsForSet().union("set1", "set2");union.forEach(System.out::println);}

操作有序集合

@Testpublic void dealZset() {//zadd score1 member1 socre2 member2redisTemplate.opsForZSet().add("zset1","swj",1);redisTemplate.opsForZSet().add("zset1","zat",2);//zrange key start end withscoresSet zset1 = redisTemplate.opsForZSet().rangeByScoreWithScores("zset1", 0, 3);zset1.forEach(System.out::println);//zincryby key increment memerredisTemplate.opsForZSet().incrementScore("zset1","zat",1);//zrem key member1 member2redisTemplate.opsForZSet().remove("zset1","swj");}

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



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

相关文章

springboot+redis实现订单过期(超时取消)功能的方法详解

《springboot+redis实现订单过期(超时取消)功能的方法详解》在SpringBoot中使用Redis实现订单过期(超时取消)功能,有多种成熟方案,本文为大家整理了几个详细方法,文中的示例代... 目录一、Redis键过期回调方案(推荐)1. 配置Redis监听器2. 监听键过期事件3. Redi

C#中checked关键字的使用小结

《C#中checked关键字的使用小结》本文主要介绍了C#中checked关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录✅ 为什么需要checked? 问题:整数溢出是“静默China编程”的(默认)checked的三种用

C#中预处理器指令的使用小结

《C#中预处理器指令的使用小结》本文主要介绍了C#中预处理器指令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 第 1 名:#if/#else/#elif/#endif✅用途:条件编译(绝对最常用!) 典型场景: 示例

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req