Spring Boot整合Redis从入门到放弃

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容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天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
17 2
|
8天前
|
NoSQL Java API
springboot项目Redis统计在线用户
通过本文的介绍,您可以在Spring Boot项目中使用Redis实现在线用户统计。通过合理配置Redis和实现用户登录、注销及统计逻辑,您可以高效地管理在线用户。希望本文的详细解释和代码示例能帮助您在实际项目中成功应用这一技术。
16 3
|
10天前
|
消息中间件 NoSQL Java
Spring Boot整合Redis
通过Spring Boot整合Redis,可以显著提升应用的性能和响应速度。在本文中,我们详细介绍了如何配置和使用Redis,包括基本的CRUD操作和具有过期时间的值设置方法。希望本文能帮助你在实际项目中高效地整合和使用Redis。
26 1
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
29天前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
69 2
|
1月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
26 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
1月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
24 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
30 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
15天前
|
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 的前后端分离的后台管理系统
30 0
|
3月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介