我们在自己写项目或者维护别人的项目时,有时候需要使用Redis数据库,本文旨在说明如何在spring boot项目中使用redis,但并不深究,旨在引导新手入门。
为什么会写本文:
因为我要维护的项目用到了spring boot和redis, 而本人并非专职搞java后台服务的人员,然后翻阅别人的文章时,发现他们似乎有点不照顾新手。 毕竟我们这些仅仅是业余维护某个项目的人,对很多东西是陌生的,所以就写了这个傻瓜式的文章。
阅读本文也不能过于新手
唯一要求,得会java语法, 知道InteliJ IDEA, 下面我边解释边说,从最简单的开始
1.安装Redis数据库
至于redis数据库是什么怎么安装测试请参考别的文章或者Redis 教程 | 菜鸟教程 (runoob.com)吧, 难度属于D级
安装后我们先来查看我们当前数据库的状态,通过 kyes *命令枚举所有已有的键值对儿得到如图所示,都是一些刚装完数据库就有的键值对,具体这些是啥我们不管它和本文无关(共有16个)
2.创建Spring boot工程
step 1: IDEA主菜单 File->New->Project...
step 2: 按照截图这样选择,其实就是一个工程模板,帮你自动生成一个spring boot工程
step 3: 继续一下一步
点击下一步后,可能会转圈根据你的网络情况吧,他实际上是去网上下载了项目文件。 这里有很多可以编辑的选项,也都不难理解,作为学习我们都保持默认即可
image.png
step 4:重要的设置勾选
这个页面就是工程各种配置了,首先我们选择左侧“web”选项卡,勾住"spring web",当然这个和使用redis完全没关系,只是为了让我们的工程更符合web服务的样子而已,为了方便阅读和对比您还是勾上吧,但必须记住不勾它是完全可以使用redis的。如图:
接下来选中"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无关
增加最基本的配置
我们添加最基本的配置来说明怎么连接到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确实存在:
继续:添加一个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里面有具体代码)
网友评论