重生之 SpringBoot3 入门保姆级学习(20、场景整合 Docker 的 Redis 对接与基础使用)

重生之 SpringBoot3 入门保姆级学习(20、场景整合 Docker 的 Redis 对接与基础使用)

    • [6.3 整合 Redis](#6.3 整合 Redis)

6.3 整合 Redis


1、创建新项目编写 application.properties 配置文件

复制代码
# redis 配置
spring.data.redis.host=192.168.1.4
spring.data.redis.port=6379
  • 如果不知道主机号的请执行下面代码找到 192.168 开头的局域网地址

    ifconfig

2、创建 RedisTestController 测试类

java 复制代码
package com.zhong.redis.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName : RedisTestController
 * @Description :
 * @Author : zhx
 * @Date: 2024-06-14 15:13
 */
@RestController
public class RedisTestController {
    @Autowired
    StringRedisTemplate redisTemplate;

    @GetMapping("/count")
    public String count() {
        Long count = redisTemplate.opsForValue().increment("count");
        // TODO 常见数据类型 k:v value可以有很多类型
        //
        //  string: 普通字符串:  redisTemplate.opsForValue()
        //  list    列表:       redisTemplate.opsForList()
        //  set:    集合:       redisTemplate.opsForset()
        //  zset:   有序集合:    redisTemplate.opsForzset()
        //  hash:   map结构:    redisTemplate.opsForHash()
        
        return "访问了[ " + count + " ]次";
    }
}

3、运行后浏览器访问 地址 刷新测试

复制代码
http://localhost:8080/count

4、查看虚拟机的 Docker 中的 Redis 是否响应

  • Redis 的常用操作演示
java 复制代码
package com.zhong.redis;

import org.junit.jupiter.api.Assertions;
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.ZSetOperations;

@SpringBootTest
class Boot307RedisApplicationTests {
    // TODO 常见数据类型 k:v value可以有很多类型
    //
    //  string: 普通字符串:  redisTemplate.opsForValue()
    //  list    列表:       redisTemplate.opsForList()
    //  set:    集合:       redisTemplate.opsForset()
    //  zset:   有序集合:    redisTemplate.opsForzset()
    //  hash:   map结构:    redisTemplate.opsForHash()
    @Autowired
    StringRedisTemplate redisTemplate;

    @Test
    void testSting() {
        redisTemplate.opsForValue().set("name", "张三");
        String name = redisTemplate.opsForValue().get("name");
        System.out.println(name);
    }

    @Test
    void testList() {
        String listName = "listtest";
        redisTemplate.opsForList().leftPush(listName, "1");
        redisTemplate.opsForList().leftPush(listName, "2");
        redisTemplate.opsForList().leftPush(listName, "3");
        String leftPop = redisTemplate.opsForList().leftPop(listName);
        Assertions.assertEquals("3", leftPop);
    }

    @Test
    void testSet() {
        String setName = "settest";
        redisTemplate.opsForSet().add(setName, "1");
        redisTemplate.opsForSet().add(setName, "2");
        redisTemplate.opsForSet().add(setName, "2");
        redisTemplate.opsForSet().add(setName, "2");
        redisTemplate.opsForSet().add(setName, "3");
        Boolean aBoolean = redisTemplate.opsForSet().isMember(setName, "2");
        Boolean bBoolean = redisTemplate.opsForSet().isMember(setName, "5");
        Assertions.assertTrue(aBoolean);
        Assertions.assertFalse(bBoolean);
    }

    @Test
    void testZset() {
        String setName = "zsettest";
        redisTemplate.opsForZSet().add(setName, "小钟", 100);
        redisTemplate.opsForZSet().add(setName, "小王", 99);
        redisTemplate.opsForZSet().add(setName, "小小", 1);
        redisTemplate.opsForZSet().add(setName, "小大", 2);

        ZSetOperations.TypedTuple<String> popMax = redisTemplate.opsForZSet().popMax(setName);
        String value = popMax.getValue();
        Double score = popMax.getScore();
        System.out.println(value + "====>" + score);
    }

    @Test
    void testHash() {
        String setName = "amap";
        redisTemplate.opsForHash().put(setName,"name","张三");
        redisTemplate.opsForHash().put(setName,"age","18");
        Object name = redisTemplate.opsForHash().get(setName, "name");
        System.out.println(name);
    }

}
  • 运行结果
相关推荐
MartinYeung518 分钟前
[论文学习]自主性如何重塑个性化对LLM智能体隐私关切与信任的影响
人工智能·学习
极客先躯1 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
FellAveal1 小时前
【Go语言入门学习笔记】Part18.工作池与WaitGroup(也即协程池)
笔记·学习·golang
菜鸟‍2 小时前
【论文学习】MICCAI 2024 || SGSeg:通过自引导机制实现胸部X光片语言引导分割的无文本推理
人工智能·深度学习·学习
lazy H2 小时前
Git clone 怎么用?克隆项目及常见问题完整教程
大数据·git·后端·学习·搜索引擎·github
菜鸟‍2 小时前
【论文学习】arxiv 2024 || RoSIS:基于鲁棒框架重新审视文本提示式手术器械分割
人工智能·学习·计算机视觉
笨鸟先飞的橘猫3 小时前
只会脚本语言的游戏后端自我提升之路——c++学习(开篇)
学习·游戏
Z5998178414 小时前
c#软件开发学习笔记--Modbus-RTU通讯
笔记·学习·c#
绿浪19844 小时前
async/await 深入学习
学习
quanjui5 小时前
【医学尝试】基于Segment Anything Model的医学图像分割研究:眼底OCT与X线胸片微调实战
人工智能·笔记·学习