美文网首页
java spring boot使用Redis数据库

java spring boot使用Redis数据库

作者: 九风特 | 来源:发表于2021-12-20 17:52 被阅读0次

    我们在自己写项目或者维护别人的项目时,有时候需要使用Redis数据库,本文旨在说明如何在spring boot项目中使用redis,但并不深究,旨在引导新手入门。

    为什么会写本文:
    因为我要维护的项目用到了spring boot和redis, 而本人并非专职搞java后台服务的人员,然后翻阅别人的文章时,发现他们似乎有点不照顾新手。 毕竟我们这些仅仅是业余维护某个项目的人,对很多东西是陌生的,所以就写了这个傻瓜式的文章。

    阅读本文也不能过于新手
    唯一要求,得会java语法, 知道InteliJ IDEA, 下面我边解释边说,从最简单的开始

    1.安装Redis数据库
    至于redis数据库是什么怎么安装测试请参考别的文章或者Redis 教程 | 菜鸟教程 (runoob.com)吧, 难度属于D级
    安装后我们先来查看我们当前数据库的状态,通过 kyes *命令枚举所有已有的键值对儿得到如图所示,都是一些刚装完数据库就有的键值对,具体这些是啥我们不管它和本文无关(共有16个)

    first.png

    2.创建Spring boot工程
    step 1: IDEA主菜单 File->New->Project...
    step 2: 按照截图这样选择,其实就是一个工程模板,帮你自动生成一个spring boot工程

    image.png

    step 3: 继续一下一步
    点击下一步后,可能会转圈根据你的网络情况吧,他实际上是去网上下载了项目文件。 这里有很多可以编辑的选项,也都不难理解,作为学习我们都保持默认即可


    image.png

    step 4:重要的设置勾选
    这个页面就是工程各种配置了,首先我们选择左侧“web”选项卡,勾住"spring web",当然这个和使用redis完全没关系,只是为了让我们的工程更符合web服务的样子而已,为了方便阅读和对比您还是勾上吧,但必须记住不勾它是完全可以使用redis的。如图:

    image.png
    接下来选中"NoSQL"选项卡 勾住第一条 如图:
    image.png
    如果你问为啥不勾第二个,我回答说,请自行查阅吧, 我之所勾第一个因为我看到官方github上的demo相当于就是使用的第一个选项。官方demo地址:spring-boot-examples/spring-boot-redis at master · ityouknow/spring-boot-examples · GitHub
    继续点击next按钮

    step 5:保持默认点击完成


    image.png

    看看生成项目
    我们查看项目的pom文件,红框部分就是redis的依赖声明,其它都是spring boot框架的东西和redis无关

    image.png

    增加最基本的配置
    我们添加最基本的配置来说明怎么连接到redis数据库,打开resources下的application.properties,我们发现它是空的,复制这些配置过去,看注释即可明白意思:

    # REDIS
    # Redis数据库索引(默认为0)
    spring.redis.database=0 
    
    # Redis服务器地址
    spring.redis.host=localhost
    
    # Redis服务器连接端口
    spring.redis.port=6379 
    
    # Redis服务器连接密码(默认为空,如果你的数据库有密码请正确填写)
    spring.redis.password=
    

    写一个测试代码
    你没看错,到现在为止所有的配置就都完成了,你可以用你的redis数据库了,我们来尝试添加一个键值对,为了方便我们就用测试接口好了,打开这个文件敲代码吧,我怕你找不到给您截图了:(确实有点啰嗦,但啰嗦点好)
    先出代码

    package com.example.demo;
    
    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;
    
    @SpringBootTest
    class DemoApplicationTests {
    
        //注入一个操控string键值对的对象
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
    
        //测试添加一个键值对
        @Test
        public void testAdd() throws Exception {
            stringRedisTemplate.opsForValue().set("bbb", "111");
        }
    
        //删除刚刚添加的键值对
        @Test
        public void testRemove() throws Exception {
            stringRedisTemplate.delete("bbb");
        }
    
        @Test
        void contextLoads() {
        }
    
    }
    

    再出截图:


    image.png

    我们看到"testAdd"和"testRemove"方法前边都有小绿箭头,我们点击小绿箭头,先执行terstAdd,之后我们查看自己的redis数据库,确实多了一个"bbb",而且值是“111”,自行测试remove,或多试试别的。
    作为一个程序员,看到这里,您应该可以举一反三了啊,比如您应该可以做一个本地接口,访问localhost:8080/hello
    来获取刚刚的"111"了哦, 啥? 你不会,好的,我继续完成它,然后您就真的需要举一反三了,因为我写累了
    好 我们先查看我们的数据库,如图,bbb确实存在:

    image.png
    继续:添加一个http get接口,打开demoApplication.java,添加它!!!
    好先看最终结果:
    image.png
    上代码:
    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class DemoApplication {
    
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
    
        @GetMapping("/hello")
        public String Hello(@RequestParam(value = "name", defaultValue = "bbb") String name){
            String val = stringRedisTemplate.opsForValue().get(name);
            return String.format("Hello key=%s, value=%s", name, val);
        }
    
    }
    

    上代码截图,真的不能在详细了!


    image.png

    作业:请自行试试 http://localhost:8080/hello?name=ccc
    怎么才能让这个网址返回“hello key=ccc, value=hero”呢?

    延伸:怎么存读一个数据结构呢?(提示请看github demo里面有具体代码)

    相关文章

      网友评论

          本文标题:java spring boot使用Redis数据库

          本文链接:https://www.haomeiwen.com/subject/iwjzfrtx.html