Spring Boot整合Redis从入门到放弃

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Spring Boot整合Redis从入门到放弃

## Redis

基于内存进行存储,支持key-value的存储形式,底层是用C语言编写的。

基于key-value形式的数据字典,结构非常简单,没有数据表的概念。

直接用键值对的形式进行数据的管理。

Redis支持5种数据类型:

1)字符串

2)列表

3)集合

4)有序集合

5)哈希

## 安装Redis

**苹果电脑**

下载:

redis.io

解压,在本地硬盘任意位置创建文件夹,在其中创建3个子文件夹

1)bin:放置启动Redis的可执行

2)db:放置数据文件

3)etc:放置配置文件,设置Redis服务的端口、日志文件的位置、数据文件位置。

**windows电脑**

https://github.com/tporadowski/redis/releases

下载 .zip文件

**linux电脑**

菜鸟教程上有呀

## 启动Redis服务(windows)

1,进入redis目录,启动redis-server


```yaml

redis-server.exe redis.windows.conf

```



2,进入redis目录,启动redis-cli,启动Redis的客户端窗口,在此窗口中即可操作Redis

数据库。


```yaml

redis-cli.exe -h 127.0.0.1 -p 6379

```


3,对数据进行操作


```yaml

set key value

get key

```


4,关闭Redis服务


```yaml

shutdown

```


5,退出客户端


```yaml

control+c

```


## Spring Boot整合Redis

Spring Data Redis 操作Redis:

https://baijiahao.baidu.com/s?id=1661937038552348304&wfr=spider&for=pc

1,创建一个maven工程


```yaml

<parent>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-parent</artifactId>

   <version>2.1.5.RELEASE</version>

</parent>


<dependencies>

   <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-web</artifactId>

   </dependency>

   <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-data-redis</artifactId>

   </dependency>

   <dependency>

       <groupId>org.apache.commons</groupId>

       <artifactId>commons-pool2</artifactId>

   </dependency>

   <dependency>

       <groupId>org.projectlombok</groupId>

       <artifactId>lombok</artifactId>

   </dependency>

</dependencies>

```


2,创建实体类,实现序列化接口,否则无法存入Redis数据库。


```java

package com.shuang;


import lombok.Data;


import java.io.Serializable;

import java.util.Date;


@Data

public class Student implements Serializable {

   private Integer id;

   private String name;

   private Double score;

   private Date birthday;

}

```


3,创建控制器


```java

package com.shuang.controller;


import com.shuang.Student;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RestController;



@RestController

public class StudentHandler {


   @Autowired

   private RedisTemplate redisTemplate;


   @PostMapping("/set")

   public void set(@RequestBody Student student){

       redisTemplate.opsForValue().set("student",student);

   }

   @GetMapping("/get/{key}")

   public Student get(@PathVariable("key") String key ){

   return (Student)redisTemplate.opsForValue().get(key);

}



   @DeleteMapping("/delete/{key}")

   public boolean delete(@PathVariable("key") String key){

   redisTemplate.delete(key);

   return redisTemplate.hasKey(key);

}

}

```



4,创建配置文件 application.yml


```yaml

spring:

 redis:

   database: 0

   host: localhost

   port: 6379

```


5,创建启动类


```java

package com.shuang;


import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication

public class Application {

   public static void main(String[] args) {

       SpringApplication.run(Application.class,args);

   }

}

```




## Redis5种数据类型

**字符串**


```java

@GetMapping("/string")

public void stringTest(){

   redisTemplate.opsForValue().set("str","hellow string");

   String str=(String) redisTemplate.opsForValue().get("str");

   System.out.println(str);

}

```


**列表**


```java

@GetMapping("/list")

public List<String> listTest(){

   ListOperations<String,String> listOperations=redisTemplate.opsForList();

   listOperations.leftPush("list","hello");

   listOperations.leftPush("list","word");

   listOperations.leftPush("list","java");

   List<String> list=listOperations.range("list",0,2);

   return list;

}

```


**集合**


```java

@GetMapping("/set")

public Set<String> setTest(){

   SetOperations<String ,String> setOperations=redisTemplate.opsForSet();

   setOperations.add("set","hello");

   setOperations.add("set","hello");

   setOperations.add("set","word");

   setOperations.add("set","word");

   setOperations.add("set","java");

   setOperations.add("set","java");

   Set<String> set= setOperations.members("set");

   return set;

}

```



**有序集合**


```java

@GetMapping("/zset")

public Set<String> zsetTest(){

   ZSetOperations<String,String> zSetOperations=redisTemplate.opsForZSet();

   zSetOperations.add("zset","Hello",1);

   zSetOperations.add("zset","word",2);

   zSetOperations.add("zset","java",3);

   Set<String> set=zSetOperations.range("zset",0,2);

   return set;


}

```


**哈希**



HashMap key value

HashOperations key hashkey value

key是一组数据的ID,hashkey和value是一组完整的HashMap数据,通过key来区分不同的Hashmap。

```java

HashMap hashMap1=new HashMap();

hashMap1.put(key1,value1);

HashMap hashMap2=new HashMap();

hashMap2.put(key2,value2);

```


```java

@GetMapping("/hash")

public void hashTest(){

   HashOperations<String,String,String> hashOperations=redisTemplate.opsForHash();

   hashOperations.put("key","hashkey","hello");

   System.out.println(hashOperations.get("key","hashkey"));

}

```


操作对象是最常用的。


原本2天前就打算写的,老姐买了一个家庭KTV套装,试了一下效果,今天星期六了,啊啊啊,干了5个小时终于搞完了.








目录
相关文章
|
存储 缓存 NoSQL
Redis 服务器全方位介绍:从入门到核心原理
Redis是一款高性能内存键值数据库,支持字符串、哈希、列表等多种数据结构,广泛用于缓存、会话存储、排行榜及消息队列。其单线程事件循环架构保障高并发与低延迟,结合RDB和AOF持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
252 0
|
30天前
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
191 5
|
2月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
202 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
7月前
|
NoSQL 安全 Java
深入理解 RedisConnectionFactory:Spring Data Redis 的核心组件
在 Spring Data Redis 中,`RedisConnectionFactory` 是核心组件,负责创建和管理与 Redis 的连接。它支持单机、集群及哨兵等多种模式,为上层组件(如 `RedisTemplate`)提供连接抽象。Spring 提供了 Lettuce 和 Jedis 两种主要实现,其中 Lettuce 因其线程安全和高性能特性被广泛推荐。通过手动配置或 Spring Boot 自动化配置,开发者可轻松集成 Redis,提升应用性能与扩展性。本文深入解析其作用、实现方式及常见问题解决方法,助你高效使用 Redis。
779 4
|
4月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
550 2
|
6月前
|
消息中间件 缓存 NoSQL
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
237 32
|
5月前
|
机器学习/深度学习 数据采集 人机交互
springboot+redis互联网医院智能导诊系统源码,基于医疗大模型、知识图谱、人机交互方式实现
智能导诊系统基于医疗大模型、知识图谱与人机交互技术,解决患者“知症不知病”“挂错号”等问题。通过多模态交互(语音、文字、图片等)收集病情信息,结合医学知识图谱和深度推理,实现精准的科室推荐和分级诊疗引导。系统支持基于规则模板和数据模型两种开发原理:前者依赖人工设定症状-科室规则,后者通过机器学习或深度学习分析问诊数据。其特点包括快速病情收集、智能病症关联推理、最佳就医推荐、分级导流以及与院内平台联动,提升患者就诊效率和服务体验。技术架构采用 SpringBoot+Redis+MyBatis Plus+MySQL+RocketMQ,确保高效稳定运行。
412 0
|
8月前
|
存储 人工智能 NoSQL
SpringBoot整合Redis、ApacheSolr和SpringSession
本文介绍了如何使用SpringBoot整合Redis、ApacheSolr和SpringSession。SpringBoot以其便捷的配置方式受到开发者青睐,通过引入对应的starter依赖,可轻松实现功能整合。对于Redis,可通过配置RedisSentinel实现高可用;SpringSession则提供集群Session管理,支持多种存储方式如Redis;整合ApacheSolr时,借助Zookeeper搭建SolrCloud提高可用性。文中详细说明了各组件的配置步骤与代码示例,方便开发者快速上手。
160 11
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
1月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。