Spring Boot整合Redis从入门到放弃

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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
目录
相关文章
|
22天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
40 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
19天前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
53 5
|
19天前
|
Java 数据库连接 数据库
从入门到精通---深入剖析Spring DAO
在Java企业级开发中,Spring框架以其强大的功能和灵活性,成为众多开发者的首选。Spring DAO(Data Access Object)作为Spring框架中处理数据访问的重要模块,对JDBC进行了抽象封装,极大地简化了数据访问异常的处理,并能统一管理JDBC事务。本文将从概述、功能点、背景、业务点、底层原理等多个方面深入剖析Spring DAO,并通过多个Java示例展示其应用实践,同时指出对应实践的优缺点。
21 1
|
23天前
|
监控 Java 数据安全/隐私保护
如何用Spring Boot实现拦截器:从入门到实践
如何用Spring Boot实现拦截器:从入门到实践
38 5
|
1月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
42 2
|
1月前
|
NoSQL Java API
springboot项目Redis统计在线用户
通过本文的介绍,您可以在Spring Boot项目中使用Redis实现在线用户统计。通过合理配置Redis和实现用户登录、注销及统计逻辑,您可以高效地管理在线用户。希望本文的详细解释和代码示例能帮助您在实际项目中成功应用这一技术。
40 4
|
1月前
|
消息中间件 NoSQL Java
Spring Boot整合Redis
通过Spring Boot整合Redis,可以显著提升应用的性能和响应速度。在本文中,我们详细介绍了如何配置和使用Redis,包括基本的CRUD操作和具有过期时间的值设置方法。希望本文能帮助你在实际项目中高效地整合和使用Redis。
57 2
|
2月前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
131 2
|
1月前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
46 0
|
7月前
|
NoSQL Java Redis
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
507 0