• SpringBoot整合Redis


    在这里插入图片描述

    ??博客主页:??
    欢迎关注:??点赞??收藏留言
    系列专栏:??SpringBoot专栏(每日更新)
    如果觉得博主的文章还不错的话,请三连支持一下博主。
    ??欢迎大佬指正,一起 学习!一起加油!
    在这里插入图片描述

    在这里插入图片描述

    目录


    ??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依赖

      
      		org.springframework.boot
      		spring-boot-starter-data-redis
      	
      
      • 1
      • 2
      • 3
      • 4
    • 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);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    在这里插入图片描述
    在这里插入图片描述
    ??获取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);
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    在这里插入图片描述

    ??与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 ops = stringRedisTemplate.opsForValue();
            String name = ops.get("name");
            System.out.println(name);
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    ??验证是否等效

    • 先修改一下name的值

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

    ??jedis技术

    • 导入依赖

      redis.clients jedis
    • 配置客户端属性

      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也支持多连接实例一起工作。

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    kotlin 转 Java
    【Proteus仿真】8位数码管动态扫描显示变化数据
    数据结构——堆、堆排序和优先级队列(代码为Java版本)
    (附源码)springboot宠物管理系统 毕业设计 121654
    java装饰器设计模式
    【大疆智图】大疆智图(DJI Terra 3.0.0)安装及使用教程
    Java并发编程异步操作Future和FutureTask
    Unity角色或摄像机移动和旋转的控制脚本
    JAVA初阶——程序逻辑控制
    今日油价查询易语言代码
  • 原文地址:https://blog.csdn.net/m0_67402774/article/details/126114931