Spring Redis Data的基本使用 入门必备!!

Spring Data Redis 实践 关于Spring Data Redis的简单应用以及1.7新特性Redis Repositories简介~ 阅读详情

一、Redis简介

redis 是一款开源的 Key-Value 数据库,运行在内存中,由 ANSI C 编写。企业开发通常采用 Redis 来实现缓存。同类的产品还有 memcache 、memcached 、MongoDB 等

1.Redis数据结构

字符串类型 string 散列类型 hash 列表类型 list 有序可重复 集合类型 set 无序不可重复 有序集合类型 sortedset 有序不可重复

2.Redis应用场景

做缓存: 缓存的是使用频次较高,但不是特别重要的数据,请求来时,优先查询非关系型数据库,如果没有查到则查询关系型数据库,从关系型数据库中查询到结果后,将结果存放到非关系型数据库中,并将结果返回给浏览器.如果查询到了,直接将查询结果返回给浏览器即可。

当用户执行 增 删 改操作时,优先操作关系型数据库, (会造成Redis数据丢失)

操作完毕后,删除非关系型数据库中的相关数据. (需要Redis数据同步)

二、Jedis

Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用。可以在Redis官网下载,当然还有一些开源爱好者提供的客户端,如Jredis、SRP等等,推荐使用Jedis。

  • jdbc: java操作mysql数据的方式
  • jedis: java操作redis数据库的方式

三、 Spring Data Redis

Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。

spring-data-redis针对jedis提供了如下功能: 1.连接池自动管理,提供了一个高度封装的“RedisTemplate”类 2.针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口 ValueOperations:简单K-V操作 SetOperations:set类型数据操作 ZSetOperations:zset类型数据操作 HashOperations:针对map类型的数据操作 ListOperations:针对list类型的数据操作

四、Spring Data Redis操作Redis数据库

第一步:导入相关坐标到Spring项目中

<!-- Redis缓存相关坐标 -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.1</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>1.7.2.RELEASE</version>
</dependency>

第二步:在resources下编写redis的配置文件

redis-config.properties
# Redis settings 
# server IP 
redis.host=192.168.25.130
# server port 
redis.port=6379
# server pass 
redis.pass=
# use dbIndex 
redis.database=0
# maxIdle
redis.maxIdle=300
# maxWait
redis.maxWait=3000
# testOnBorrow
redis.testOnBorrow=true
applicationContext-redis.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd   
            http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 1.加载外部配置文件 -->
    <context:property-placeholder location="classpath*:properties/*.properties"/>

    <!-- 2.redis相关配置 -->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="${redis.maxIdle}"/>
        <property name="maxWaitMillis" value="${redis.maxWait}"/>
        <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
    </bean>

    <!-- 3.Jedis连接工厂的配置 -->
    <bean id="JedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:pool-config-ref="poolConfig"/>

    <!-- 4.redis模板的配置 -->
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="JedisConnectionFactory"/>
    </bean>

</beans>  

第三步:使用redisTemplate模板操作数据库

1.操作String类型数据

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-redis.xml")
public class RedisStrTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testSetString(){
        //模板绑定存储的数据类型为String并存入数据: key是testStr   value是DinTalk
        redisTemplate.boundValueOps("testStr").set("DinTalk");
    }

    @Test
    public void testGetString(){
        //模板绑定存储的数据类型为String并取数据:使用key testStr
        String testStr = (String) redisTemplate.boundValueOps("testStr").get();
        System.out.println(testStr);
    }

    @Test
    public void testDelString(){
        //直接用模板根据key删除数据,删除后无数据查询返回null
        redisTemplate.delete("testStr");
    }

    //使用相同的key重新设置值便是更新
}

2.操作List类型数据

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-redis.xml")
public class RedisListTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testSetList(){
        //模板绑定存储的数据类型为List并存入数据:key是myList,List的数据类型,数据为din.....
        redisTemplate.boundListOps("myList").leftPush("din");
        redisTemplate.boundListOps("myList").leftPush("talk");
        redisTemplate.boundListOps("myList").leftPush("cn");
    }

    @Test
    public void testGetList(){
        //模板绑定存储的数据类型为List并取数据:key是myList,rang中0是开始,-1是全部
        List myList = redisTemplate.boundListOps("myList").range(0, -1);
        myList.stream().forEach(System.out::println);
        //取list中的一个数据 :先进先出(相当于弹出-删除了)
        //String myList = (String) redisTemplate.boundListOps("myList").rightPop();
        //System.out.println(myList); //din
    }

    @Test
    public void testDelList(){
        //直接用模板根据key删除数据(删除整个集合)
        redisTemplate.delete("myList");
        //指定删除list的数据 :删除一个talk
        //redisTemplate.boundListOps("myList").remove(1,"talk");
    }

    //使用相同的key重新设置值便是更新
}

3.操作Set类型数据

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-redis.xml")
public class RedisSetTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testSetValue(){
        //模板绑定存储的数据类型为Set并存入数据: key是mySet   value是din talk 等
        redisTemplate.boundSetOps("mySet").add("www");
        redisTemplate.boundSetOps("mySet").add("din");
        redisTemplate.boundSetOps("mySet").add("talk");
        redisTemplate.boundSetOps("mySet").add("cn");
    }

    @Test
    public void testGetValue(){
        //模板绑定存储的数据类型为Set并取数据:使用key为 mySet
        Set mySet = redisTemplate.boundSetOps("mySet").members();
        mySet.stream().forEach(System.out::println);
    }

    @Test
    public void testDelValue(){
        //直接用模板根据key删除数据,删除整个Set集合
        redisTemplate.delete("mySet");
        //redisTemplate.boundSetOps("mySet").remove("www");
    }

    //使用相同的key重新设置值便是更新
}

4.操作Hash类型数据

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-redis.xml")
public class RedisHashTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testSetHash(){
        //模板绑定存储的数据类型为Hash并存入数据: key是myHash value是{din:叮}等键值对
        redisTemplate.boundHashOps("myHash").put("din","叮");
        redisTemplate.boundHashOps("myHash").put("talk","当");
        redisTemplate.boundHashOps("myHash").put("song","宋");
        redisTemplate.boundHashOps("myHash").put("hui","慧");
    }

    @Test
    public void testGetHash(){
        //模板绑定存储的数据类型为Hash并取数据:使用key为 myHash,获取键的集合
        //Set myHash = redisTemplate.boundHashOps("myHash").keys();
        //myHash.stream().forEach(System.out::println);
        //获取value的集合(值可重复,所以是list)
        //List myHash = redisTemplate.boundHashOps("myHash").values();
        //myHash.stream().forEach(System.out::println);
        //使用myHash这个key获取到Hash并用键获取值
        String s = (String) redisTemplate.boundHashOps("myHash").get("din");
        System.out.println(s);
    }

    @Test
    public void testDelHash(){
        //直接用模板根据key删除数据,删除整个Hash集合
        //redisTemplate.delete("myHash");
        redisTemplate.boundHashOps("myHash").delete("din");
    }

    //使用相同的key重新设置值便是更新
}
Spring Data Redis 实战指南 通过@RedisHash注解定义Redis存储结构,该注解需指定哈希前缀值作为领域模型的命名空间标识。实体类需使用@Id标注主键字段,存储时将自动组合为[前缀]:[ID值]@Data@Id// 其他字段...Spring Data Redis 提供了完整的 Redis 集成解决方案,通过注解驱动开发模式显著提升了开发效率。与 Spring Boot 的深度集成简化了配置流程,开发者可以快速实现多种数据结构的灵活存储。开发效率@RedisHash等注解自动处理对象-存储映射,接口免除样板代码。 阅读详情

相关推荐

后端领域如何高效使用 Spring Data Redis

在当今的后端系统中,“快"是用户体验的生命线。想象一下,当你打开购物App查看商品详情时,如果页面加载需要3秒,你可能会直接关闭App——而这3秒中,有2.5秒可能都耗在数据库查询上。Redis 就像超市里的"快速取货区”,把常用商品(热点数据)放在最容易拿到的地方,让用户无需跑到仓库(数据库)就能快速获取。但 Redis 本身只是个"仓库",如何高效管理这个仓库?如何避免"拿错货"(数据不一致)、“货架坍塌”(缓存雪崩)、“仓库拥堵”(连接池耗尽)等问题?

AI架构全栈开发实战笔记 1133

Redis的基础使用

Redis基础 Redis入门 Redis数据类型 Redis常用命令 在Java中操作Redis 1. 前言 1.1 什么是Redis Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」。 基于内存存储,读写性能高 适合存储热点数据(热点商品、资讯、新闻) 企业应用广泛 1.2 使用Redis能做什么 数据缓存 消息队列 注册中心 发布订阅

飞奔的五花肉博客 1145

使用spring-boot-starter-data-redis访问redis入门示例(默认使用Lettuce)

1、 引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2、redis基本配置 在applicati...

西瓜游侠的博客 3678

Spring集成Redis应用

Redis简介Redis(Remote Dictionary Server)是一个基于内存开源的键值存储系统,具有高性能、高可靠性、支持多种数据结构等特点。Redis支持主从复制、持久化、Lua脚本等功能,可以应用于许多场景,如缓存、消息队列、计数器、分布式锁等。并且Redis具有以下几个特点:高性能:Redis采用了基于内存的存储机制,将数据存在内存中以达到快速读写的目的。此外,Redis还采用了多种提高性能的技术,如快速网络IO,异步IO等。

weixin_45300957的博客 1406

SpringCloud集成Spring Data Redis

文章目录Spring Data Redis源码springcloud-parent2父Maven模块spring-redis子Maven模块结果分析 Spring Data Redis   如同使用SpringData进行关系型数据库访问一样,使用Spring Data Redis的第一步就是连接到Redis服务器。要想实现连接,就需要获取RedisConnection,而获取RedisConne...

ZZY1078689276的专栏 3530

深入解析Flex NOC总线驱动的实时带宽与延迟优化策略

本文深入解析了Flex NOC总线驱动的核心价值与优化策略。通过解读`/proc/noc/real_time`中的实时带宽与延迟数据,并结合`sysfs`接口进行动态QoS调优,可以有效解决芯片内部数据拥堵问题。文章以智能摄像头和算力盒子的实际案例,详细说明了如何通过优先级调整、带宽限制和参数优化,提升系统在复杂任务下的实时性与稳定性。

weixin_29289821的博客 284

在Spring中使用Redis

在教程《在Java程序中使用Redis》中介绍了在没有封装情况下使用 Java API 的缺点,需要自己编写规则把 Java 对象和 Redis 的字符串进行相互转换,而在 Spring 中这些问题都可以轻松处理。

unber的博客 4681

基于PLC的立体车库控制系统设计

本文介绍了基于西门子S7-1511-1PN PLC和KTP700 Basic PN HMI的立体堆垛式停车场自动化控制系统。系统通过PLC逻辑控制滑台运动,配合传感器实现车辆存取自动化,包含初始化、入库、出库和安全保护程序。程序采用模块化设计,分为安全互锁、动画显示、模式切换等六个功能模块,运用边沿触发、定时器和多级联锁确保安全。HMI界面提供模式切换、车位选择、状态显示和手动控制功能。该系统具有模块化、安全性和可扩展性特点,可应用于多车位立体停车场场景。

sxs3030787796的博客 1265

Redis—spring-data-redis的使用

spring-data-redis StringRedisTemplate 定义: package org.springframework.data.redis.core; import org.springframework.data.redis.connection.DefaultStringRedisConnection; import org.springframework.data.redis.connection.RedisConnection; import org.springframew

lercent的博客 610

Claude AI实战指南:从注册到精通,突破手机验证的终极解决方案

本文提供了一份详尽的Claude AI实战指南,重点解决了国内用户注册过程中的手机号验证难题,并分享了使用技巧。文章详细介绍了如何通过虚拟手机号服务等方案完成注册,并深入解析了Opus、Sonnet、Haiku三大模型的特点与选择策略,帮助用户从注册到精通,高效利用这一安全、健谈的AI助手进行内容创作、编程开发与学习研究。

weixin_29092031的博客 1233

【YOLO系列】YOLOv5超详细解读(源码详解+入门实践+改进)

一文带你详细了解YOLOv5(含YOLO系列论文讲解+源码详解+入门实践+算法改进)

路人贾的博客 25万+

Spring Data Redis的基本使用

自用

jiabao0520的博客 1135

Multisim14.0仿真应用设计(十六)74LS138译码器应用仿真

74LS138为3线-8线译码器。

zhusl6688的博客 2982

Redis工作笔记-spring-data-redis的基本使用

目录 spring 操作 spring 这里使用spring-data-redis,来操作Redis,主要是通过spring来操作的,maven操作如下: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"...

IT1995的博客 4685

【网络与爬虫 62】小程序爬虫终极攻略:微信支付宝小程序数据采集完全指南

本文深入解析微信和支付宝小程序的爬虫技术,从基础架构分析到高级逆向工程,涵盖WXML/AXML模板解析、API接口拦截、网络流量分析等核心技术。通过实战案例和代码示例,帮助开发者掌握小程序数据采集的完整技术栈。

熵数实验室 3418

【花雕学编程】嵌入式破局:MimiClaw入局后,“小龙虾”AI智能体生态的竞争与未来

摘要: 2026年初,开源项目OpenClaw的爆发式增长带动AI智能体赛道迅速崛起,国内外厂商竞相布局,形成多元化的“小龙虾”生态。国外开源社区推出的嵌入式智能体MimiClaw填补了边缘设备场景空白,重塑行业竞争格局。本文系统梳理生态构成,分析云厂商(如腾讯、阿里云)、大模型厂商(如智谱、MiniMax)、硬件/OS厂商(华为)及开源独立派(有道龙虾、MimiClaw)的差异化策略,并预判未来趋势:消费级渗透加速、云边协同、IM整合及模型与Agent深度绑定。同时提醒生态存在数据泄露等高危风险,需警惕安

雕爷学编程 885

Redis系列之Spring Data Redis

概述、自动配置、入门使用、RedisTemplate、方法分类、execute类、原生Redis指令、排序、事务、Redis Server、Operations有两类、CAS操作、发布订阅、Lua脚本、序列化、StringRedisSerializer、RedisSerializer、属性配置、RedisCallback、SessionCallback

lonelymanontheway的博客 2983

openCv +3.4.0 车牌定位(C++版本)

#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc.hpp> #include "opencv2/shape.hpp" using namespace ...

Bamboo265925的博客 2337

使用 Spring Data Redis 实现 Redis 数据存储详解

Spring Data Redis 是 Spring 生态中操作 Redis 的核心模块,它封装了 Redis 客户端的底层细节(如 Jedis 或 Lettuce),提供了统一的 API 来操作 Redis 的数据结构。确保所有操作的 Key/Value 序列化方式一致,避免出现乱码或类型错误。或手动关闭连接,避免未释放的连接耗尽资源。在 Redis 配置中设置。

FAQEW的博客 2861

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring Data Redis 详解

Redis 其实非常简单,但是使用了 Spring Data Redis,会发现更简单,其实相当于加了个中间层在里面,并不需要再去关注多种 Redis 的工具库了。

RedRay0的博客 1995

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Redis入门 —— 基本数据类型和Spring Data Redis

本文介绍了Redis的基本使用方法和在Spring项目中的集成应用。首先说明Redis作为键值对存储数据库的特点,详细讲解了字符串、哈希、列表、集合和有序集合五种数据类型的常用操作命令。随后介绍了在SpringBoot项目中通过Spring Data Redis框架集成Redis的步骤,包括依赖配置、模板对象创建以及各种数据类型的Java操作示例。文章通过代码演示了如何在Java中实现Redis的增删查改等基本功能,为开发者在项目中应用Redis提供了实用参考。

Rookiebird829的博客 997

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SpringBoot中Spring-data-redis入门使用

SpringBoot中Spring-data-redis入门使用 编者的话 Spring-data-redis是基于Spring框架的redis链接插件,功能强大,简单好用(至少对我这种小白,不深究其原理和强大功能的话,是简单好用的),其和Jedis两者是Spring中常用的操作Redis服务的工具,两者的区别及其优缺点自行百度,我也不会,推荐大佬的博文 JAVA与Redis的结合 这里,小编只是介绍Spring-data-redis的简单使用,其包括引依赖,application.yml中对进行简单配置,

weixin_42510217的博客 3311

Spring-data-redis介绍

spring data是用于简化数据库访问的开源框架,其主要目标是使得对数据的访问变得方便快捷,主要包括:jdbc、redis、jsp、elasticsearch只要是Java的开发,基本上都应用大型的开发环境(毕竟生态很成熟,别说所谓的其他语言好与坏),既然要开发啊Java项目,必然要有Spring开发框架,那么既然有了Spring开发框架,就需要"万物整合",自然也就包含了Redis的整合,

weixin_42486553的博客 1688

Lua入门和使用Redis、Redisson、Spring-data-redis调用Lua脚本

Lua语言的入门以及Redis、Redisson、Spring-data-redis调用lua脚本示例

dzyls的笔记 2万+

Spring Data Redis的配置、连接及常用方法的使用

Spring Data Redis的概述 Spring Data Redis是Spring大家族的一部分 提供了在Spring应用中通过简单的配置访问Redis服务 对Redis底层开发包(Jedis JRedis RJC)进行了高度封装 RedisTemplate提供了Redis的各种操作 异常处理及序列化 支持发布订阅 并对Spring 3.1 cache进行了实现 Spring Data R...

"✧treasure mountain✧" 1万+

Redis以及Spring Data Redis

springboot项目中资源缓存,以及定时清理无用资源

轻言细语莫泪痕 2020
上一篇: 实现基于SpringBoot+Maven+Mysql+Redis+RabbitMQ 的高并发秒杀系统(限时秒杀)
iT-放雾矛木_
博客等级 码龄7年 15粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值