SpringBoot整合Redis

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: SpringBoot整合Redis
🍁博客主页:👉 不会压弯的小飞侠
✨欢迎关注:👉点赞👍收藏⭐留言✒
✨系列专栏:👉 SpringBoot专栏(每日更新)
✨如果觉得博主的文章还不错的话,请三连支持一下博主。
🔥欢迎大佬指正,一起 学习!一起加油!
在这里插入图片描述

在这里插入图片描述

@TOC


🍁NoSQL解决方案

  • 常见的NoSQL解决方案

    • Redis
    • MongoES
  • 说明:上述技术通常在Linux系统中安装部署,本篇基于Windows版安装所有的软件。

🍁Redis简介

  • Redis是一款key-value存储结构的内存级NoSQL数据库

    • 支持多种数据存储格式
    • 支持持久化
    • 支持集群

🍁Redis的安装

  • windows下安装
  • 下载连接:点击下载
  • 解压
  • 打开解压后的文件,在搜索框搜索cmd,并打开
  • 输入命令:redis-server.exe ,启动失败。

在这里插入图片描述

  • 输入命令:redis-windows.conf ,还是启动失败。

在这里插入图片描述

  • 再次打开cmd

在这里插入图片描述

  • 输入以下命令

    • redis-cli
    • shutdwn
    • exit

在这里插入图片描述

  • 输入启动命令:redis-windows.conf 启动成功。

在这里插入图片描述

🍁Redis基本命令

  • String类型的命令

    • set key value 设置数据,如果key存在就覆盖
    • get key 获取key对应的值
  • hash类型的命令

    • hset key filed value 设置filed字段的value
    • hget key filed 获取filed字段的value
  • nil 表示为空
  • clear 清屏
  • key* 获取所有的key

在这里插入图片描述
在这里插入图片描述

🍁SpringBoot整合Redis

  • 新建一个Springboot项目,这里就不过多描述,专栏里都有详细的教程。

⭐⭐⭐注意:导入相关依赖,勾上之后,springboot会自动导入所需的依赖。
在这里插入图片描述

  • redis依赖
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
  • RedisTemplate提供操作各种数据存储类型的接口API

在这里插入图片描述

🍁测试:

package com.jkj;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

@SpringBootTest
class Springboot10RedisApplicationTests {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void set(){
        ValueOperations ops = redisTemplate.opsForValue();
        ops.set("name","rc");
    }

    @Test
    void get() {
        ValueOperations ops = redisTemplate.opsForValue();
        Object value = ops.get("name");
        System.out.println(value);
    }
}

在这里插入图片描述
在这里插入图片描述
🍁获取hash值

package com.jkj;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

@SpringBootTest
class Springboot10RedisApplicationTests {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    void hset(){
        HashOperations hash = redisTemplate.opsForHash();
        hash.put("person","name","xfx");
        hash.put("person","name1","xmg");

    }

    @Test
    void hget() {
        HashOperations hash = redisTemplate.opsForHash();
        Object o = hash.get("person", "name");
        System.out.println(o);
    }

}

在这里插入图片描述

🍁与Redis客户端操作等效

  • StringRedisTemplate以字符串作为key和value

🍁测试:

package com.jkj;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

@SpringBootTest
public class StringRedisApplication {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Test
    void get(){
        ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
        String name = ops.get("name");
        System.out.println(name);

    }
}

🍁验证是否等效

  • 先修改一下name的值

在这里插入图片描述
🍁运行测试
在这里插入图片描述

🍁jedis技术

  • 导入依赖
<dependency>
     <groupId>redis.clients</ groupId>
     <artifactId>jedis</artifactId>
</dependency>
  • 配置客户端属性
spring:
  redis:
    host: localhost
    port: 6379
    client-type: jedis
  • 配置客户端专用属性
spring:
  redis:
    host: localhost 
    port: 6379
    client-type: lettucelettuce:
       pool:
         max-active: 16
   jedis:
      pool:
      max-active: 16

在这里插入图片描述

  • lettcus与jedis区别

    • jedis连接Redis服务器是直连模式,当多线程模式下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个连接专用,这样整体性能就大受影响。
    • lettcus基于Netty框架进行与Redis服务器连接,底层设计中采用StatefulRedisConnection。
    • StatefulRedisConnection自身是线程安全的,可以保障并发访问安全问题,所以一个连接可以被多线程复用,lettcus也支持多连接实例一起工作。
相关实践学习
基于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
相关文章
|
15天前
|
存储 NoSQL Java
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
|
21天前
|
存储 缓存 NoSQL
SpringBoot配置第三方专业缓存技术Redis
SpringBoot配置第三方专业缓存技术Redis
20 4
|
10天前
|
SQL NoSQL 关系型数据库
若依修改02,若以提供了多种版本,RuoYi-Cloud和SpringBoot+Vue都是PC端的,如果想要适配手机端,用Uniapp+vue,导入Mysql和启动Redis
若依修改02,若以提供了多种版本,RuoYi-Cloud和SpringBoot+Vue都是PC端的,如果想要适配手机端,用Uniapp+vue,导入Mysql和启动Redis
|
14天前
|
缓存 NoSQL Java
Spring Boot整合Redis缓存的最佳实践
Spring Boot整合Redis缓存的最佳实践
|
17天前
|
缓存 NoSQL Java
Spring Boot与Redis的缓存一致性问题
Spring Boot与Redis的缓存一致性问题
|
17天前
|
NoSQL Java Redis
|
17天前
|
消息中间件 NoSQL Java
Spring Boot中使用Redis和Lua脚本实现延时队列
Spring Boot中使用Redis和Lua脚本实现延时队列
|
20天前
|
缓存 NoSQL Redis
SpringBoot2.4.5使用redis缓存
SpringBoot2.4.5使用redis缓存
18 0
|
21天前
|
NoSQL Java 关系型数据库
非关系型数据库NoSQL数据层解决方案 之 redis springboot整合与读写操作 2024详解以及window版redis5.0.14下载
非关系型数据库NoSQL数据层解决方案 之 redis springboot整合与读写操作 2024详解以及window版redis5.0.14下载
18 0
|
24天前
|
NoSQL 安全 Linux
springboot+shiro+redis前后端分离实现认证(一)
springboot+shiro+redis前后端分离实现认证(一)
22 0