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个小时终于搞完了.








相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6天前
|
XML Java 数据格式
Spring框架入门:IoC与DI
【5月更文挑战第15天】本文介绍了Spring框架的核心特性——IoC(控制反转)和DI(依赖注入)。IoC通过将对象的创建和依赖关系管理交给容器,实现解耦。DI作为IoC的实现方式,允许外部注入依赖对象。文章讨论了过度依赖容器、配置复杂度等常见问题,并提出通过合理划分配置、使用注解简化管理等解决策略。同时,提醒开发者注意过度依赖注入和循环依赖,建议适度使用构造器注入和避免循环引用。通过代码示例展示了注解实现DI和配置类的使用。掌握IoC和DI能提升应用的灵活性和可维护性,实践中的反思和优化至关重要。
23 4
|
6天前
|
JSON NoSQL Java
深入浅出Redis(十三):SpringBoot整合Redis客户端
深入浅出Redis(十三):SpringBoot整合Redis客户端
|
6天前
|
安全 Java 数据库连接
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
|
6天前
|
NoSQL 关系型数据库 MySQL
redis 入门01
redis 入门01
16 0
|
6天前
|
缓存 NoSQL Java
【Redis系列笔记】Redis入门
本文介绍了Redis常用命令,以及SpringBoot集成Spring Data Redis和Spring Cache。Spring Data Redis 提供了对 Redis 的操作方法,而 Spring Cache 则提供了基于注解的缓存功能,可以方便地将方法的返回值缓存到 Redis 中,以提高性能和减少对数据源的访问次数。这样的集成可以帮助开发者更便捷地利用 Redis 来管理应用程序的数据和缓存。
99 4
|
6天前
|
缓存 NoSQL Java
springboot业务开发--springboot集成redis解决缓存雪崩穿透问题
该文介绍了缓存使用中可能出现的三个问题及解决方案:缓存穿透、缓存击穿和缓存雪崩。为防止缓存穿透,可校验请求数据并缓存空值;缓存击穿可采用限流、热点数据预加载或加锁策略;缓存雪崩则需避免同一时间大量缓存失效,可设置随机过期时间。文章还提及了Spring Boot中Redis缓存的配置,包括缓存null值、使用前缀和自定义过期时间,并提供了改造代码以实现缓存到期时间的个性化设置。
|
6天前
|
存储 NoSQL Java
Spring Boot与Redis:整合与实战
【4月更文挑战第29天】Redis,作为一个高性能的键值存储数据库,广泛应用于缓存、消息队列、会话存储等多种场景中。在Spring Boot应用中整合Redis可以显著提高数据处理的效率和应用的响应速度。
30 0
|
6天前
|
存储 缓存 NoSQL
Redis入门到通关之Redis内存淘汰(内存过期)策略
Redis入门到通关之Redis内存淘汰(内存过期)策略
35 3
|
6天前
|
存储 NoSQL Linux
Redis入门到通关之多路复用详解
Redis入门到通关之多路复用详解
24 1
|
6天前
|
存储 NoSQL Linux
Redis入门到通关之Redis5种网络模型详解
Redis入门到通关之Redis5种网络模型详解
35 1