Spring Boot整合Redis从入门到放弃

简介: 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持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
478 0
|
2月前
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
281 5
|
2月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
446 2
|
8月前
|
NoSQL 安全 Java
深入理解 RedisConnectionFactory:Spring Data Redis 的核心组件
在 Spring Data Redis 中,`RedisConnectionFactory` 是核心组件,负责创建和管理与 Redis 的连接。它支持单机、集群及哨兵等多种模式,为上层组件(如 `RedisTemplate`)提供连接抽象。Spring 提供了 Lettuce 和 Jedis 两种主要实现,其中 Lettuce 因其线程安全和高性能特性被广泛推荐。通过手动配置或 Spring Boot 自动化配置,开发者可轻松集成 Redis,提升应用性能与扩展性。本文深入解析其作用、实现方式及常见问题解决方法,助你高效使用 Redis。
892 4
|
3月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
259 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
7月前
|
人工智能 Java API
Spring AI 实战|Spring AI入门之DeepSeek调用
本文介绍了Spring AI框架如何帮助Java开发者轻松集成和使用大模型API。文章从Spring AI的初探开始,探讨了其核心能力及应用场景,包括手动与自动发起请求、流式响应实现打字机效果,以及兼容不同AI服务(如DeepSeek、通义千问)的方法。同时,还详细讲解了如何在生产环境中添加监控以优化性能和成本管理。通过Spring AI,开发者可以简化大模型调用流程,降低复杂度,为企业智能应用开发提供强大支持。最后,文章展望了Spring AI在未来AI时代的重要作用,鼓励开发者积极拥抱这一技术变革。
2722 71
Spring AI 实战|Spring AI入门之DeepSeek调用
|
5月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
598 2
|
7月前
|
消息中间件 缓存 NoSQL
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
257 32
|
5月前
|
前端开发 Java API
基于 Spring Boot 3 与 React 的 Java 学生信息管理系统从入门到精通实操指南
本项目基于Spring Boot 3与React 18构建学生信息管理系统,涵盖前后端开发、容器化部署及测试监控,提供完整实操指南与源码,助你掌握Java全栈开发技能。
281 0
|
6月前
|
Java 关系型数据库 MySQL
【Spring】【事务】初学者直呼学会了的Spring事务入门
本文深入解析了Spring事务的核心概念与使用方法。Spring事务是一种数据库事务管理机制,通过确保操作的原子性、一致性、隔离性和持久性(ACID),维护数据完整性。文章详细讲解了声明式事务(@Transactional注解)和编程式事务(TransactionTemplate、PlatformTransactionManager)的区别与用法,并探讨了事务传播行为(如REQUIRED、REQUIRES_NEW等)及隔离级别(如READ_COMMITTED、REPEATABLE_READ)。
500 1