Maven + Springboot + redis 配置
前言
刚进入到Java 开发的世界,对于小白Java的我来说,使用Maven + SpringBoot 的项目下启动redis;
第一步 本地安装Redis 服务
关于redis的教程链接 点击这里:https://www.runoob.com/redis/redis-install.html
由于我是Mac 上开发因此安装如下:
1. 下载redis 安装包
- $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
- $ tar xzf redis-2.8..tar.gz
- $ cd redis-2.8.
- $ make
备注:上面的下载后可以解压到你自己的人以目录
2. 启动redis 服务
make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:
下面启动redis服务.
- $ cd src
- $ ./redis-server
3. 启动服务后进行客户端链接测试
- $ cd src
- $ ./redis-cli
- 127.0.0.1:> set foo bar
- OK
- 127.0.0.1:> get foo
- "bar"
这里可以看到本地的地址和端口分别为: 127.0.0.1 和 6379 基本端口是不会变的。
到这里为子,我们的redis 本地服务算是安装完成。
第二步 idea 配置以及代码处理
1. pom.xml 文件中引入依赖
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis</artifactId>
- </dependency>
2. application.yml(或applicationx.xml)之中 配置redis服务信息
由于我的工程是使用yml 那么这里就以yml 为主:
- # Redis 配置
- redis:
- database: 0 #数据库索引(默认为0)
- host: 127.0.0.1
- port: 6379 #默认链接端口
- password: #默认为空
- lettuce:
- pool:
- max-active: 8 #最大链接池
- max-wait: -1 #最大阻赛等待时间(使用负值没有限制)默认为-1
- max-idle: 8 #连接池中的最大空闲连接 默认 8
- min-idle: 0
3. 编写简单代码测试
- package com.king.controller;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.redis.core.StringRedisTemplate;
- import org.springframework.web.bind.annotation.*;
- @RestController
- @RequestMapping("/redis")
- @ResponseBody
- public class RedisStringController {
- @Autowired
- private StringRedisTemplate stringRedisTemplate;
- @PutMapping("/string/put")
- public void put(String key , @RequestParam(required = false,defaultValue = "default") String value){
- stringRedisTemplate.opsForValue().set(key, value);
- }
- @GetMapping("/string/get")
- public Object get(String key){
- return stringRedisTemplate.opsForValue().get(key);
- }
- }
上面测试代码分别写了 一个 put 提交 和一个get请求
4. 运行测试(Run)
我这里代码是PUT 方式,所以不能直接在浏览器上进行访问,这里我就使用最简单的curl命令进行请求。
打开自己的终端,执行以下命令:
执行put 数据存储操作
- $ curl -X PUT --data 'key=kingbo&value=ok' http://127.0.0.1:8080/redis/string/put
执行get 获取操做
- $ curl http://127.0.0.1:8080/redis/string/get\?key\=kingbo
- ok
第三部 实现redis进行Java对象模型存储
在上述使用中,是无法存储对象的,存储对象的话需要使用RedisTemplate并且要使用响应的序列化机制,下面我们就来测试下:
1. 引入序列化的jar包,这里我们是使用jackson
在pom.xml 文件中,添加依赖
- <!-- redis 对象存储相关配置-->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
2. 在Java工程中添加 RedisConfig文件
- package com.king.config;
- /*
- * 文档地址
- * http://www.ityouknow.com/springboot/2016/03/06/spring-boot-redis.html
- *
- *
- * */
- import org.springframework.cache.annotation.EnableCaching;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.data.redis.connection.RedisConnectionFactory;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
- import org.springframework.data.redis.serializer.StringRedisSerializer;
- @Configuration
- //@EnableCaching
- public class RedisConfig {
- @Bean
- public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
- RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
- //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
- redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
- redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
- //使用StringRedisSerializer来序列化和反序列化redis的ke
- redisTemplate.setKeySerializer(new StringRedisSerializer());
- redisTemplate.setHashKeySerializer(new StringRedisSerializer());
- //开启事务
- redisTemplate.setEnableTransactionSupport(true);
- redisTemplate.setConnectionFactory(redisConnectionFactory);
- return redisTemplate;
- }
- }
3. 添加测试controller
- package com.king.controller;
- import com.king.pojo.User;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.web.bind.annotation.*;
- @RequestMapping("/redis/object")
- @RestController
- public class RedisObjectController {
- @Autowired
- private RedisTemplate redisTemplate;
- @GetMapping("/get/{username}")
- public Object get(@PathVariable("username") String username){
- return redisTemplate.opsForValue().get(username);
- }
- @PutMapping("/put")
- public void put(String username,Integer age,Integer id){
- User user= new User();
- user.setId(id);
- user.setAge(age);
- user.setUsername(username);
- redisTemplate.opsForValue().set(username,user);
- }
- }
其中我这里的User 模型代码如下
- package com.king.pojo;
- import java.io.Serializable;
- public class User implements Serializable {
- private Integer id;
- private String username;
- private Integer age;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- }
4. 运行测试
数据上传
- $ curl -X PUT --data 'username=jinlingbo&age=18&id=1' http://127.0.0.1:8080/redis/object/put
数据查询(get 操作可以直接在浏览器访问)
- $ curl http://127.0.0.1:8080/redis/object/get/jinlingbo
- {"id":,"username":"jinlingbo","age":}%
已经打印出结果
参考文献
https://segmentfault.com/a/1190000017805065
https://www.runoob.com/redis/redis-install.html
Maven + Springboot + redis 配置的更多相关文章
- springboot +redis配置
springboot +redis配置 pom依赖 <dependency> <groupId>org.springframework.boot</groupId> ...
- redis 安装使用 & SpringBoot Redis配置
1.安装 https://www.cnblogs.com/dingguofeng/p/8709476.html https://www.runoob.com/redis/redis-keys.html ...
- Springboot+Redis 配置和使用
pom.xml 引入redis 开启缓存 <!-- cache --> <dependency> <groupId>org.springframework.boot ...
- SpringBoot cache-control 配置静态资源缓存 (以及其中的思考经历)
昨天在部署项目时遇到一个问题,因为服务要部署到外网使用,中间经过了较多的网络传输限制,而且要加载arcgis等较大的文件,所以在部署后,发现页面loading需要很长时间,而且刷新也要重新从服务器下载 ...
- springboot中配置主从redis
测试redis的主从配置 redis实例 文件夹名称如下 redis_master_s redis_slaver1_s redis_slaver2_s redis.conf文件 master的redi ...
- springboot学习笔记-4 整合Druid数据源和使用@Cache简化redis配置
一.整合Druid数据源 Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,Druid在监控,可扩展性,稳定性和性能方面具有比较明显的优势.通过Druid提供的监控功能,可以实时观察数据库 ...
- SpringBoot + Redis:基本配置及使用
注:本篇博客SpringBoot版本为2.1.5.RELEASE,SpringBoot1.0版本有些配置不适用 一.SpringBoot 配置Redis 1.1 pom 引入spring-boot-s ...
- SpringBoot Redis序列化配置
Redis配置 #Redis spring.redis.host= spring.redis.port=6379 spring.redis.database=0 # Redis服务器连接密码(默认为空 ...
- 从源码研究如何不重启Springboot项目实现redis配置动态切换
上一篇Websocket的续篇暂时还没有动手写,这篇算是插播吧.今天讲讲不重启项目动态切换redis服务. 背景 多个项目或微服务场景下,各个项目都需要配置redis数据源.但是,每当运维搞事时(修改 ...
随机推荐
- Delphi多线程详解
(整理自网络) Delphi多线程处理 1-1多线程的基本概念 WIN 98/NT/2000/XP 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用CPU 运行时间和资源,或者 ...
- 第48章 MDK的编译过程及文件类型全解
Frm: http://www.cnblogs.com/firege/p/5806134.html 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教 ...
- sed 删除含有某个字符串的行 (在文件txt)
#删除a.txt中含有“aaa”的行 sed -i “/aaa/d” a.txt
- base64图片下载
下面这种写法有些chrome不起作用 downLoadCanvas (data, filename = '活动.png') { var saveLink = document.createElemen ...
- MySql 主从复制及深入了解
分享一个不错的mysql文章 https://segmentfault.com/a/1190000008942618
- 2019ICPC南京网络赛F Greedy Sequence
题意:对于1<=i<=n每次找到(pos[i]-k,pos[i]+k)内不大于i的最大那个数,ans[i]=ans[mx]+1,若ans[mx]未知则递归处理ans[mx] PS:这个题比 ...
- WebServer Project-02-XML解析
XML:Extensible Markup Language,可扩展标记语言,左卫门数据的一种存储格式或用于存储软件的参数,程序解析此配置文件,就可以达到不修改代码就能更改程序的目的. <?xm ...
- what codes does sudo command do in Linux?
sometime, to make your change of configuration file be effective to web application, we have to rest ...
- PL SQL 存储过程 SQL SERVER创建存储过程及调用,Oracle创建存储过程及调用
Oracle使用存储过程实例: 例1: //查出表字段赋值给存储过程变量 create proc proc_stu @sname varchar(20), //默认是输入参数(input),另外还有两 ...
- 支付宝支付接口-运行支付宝demo
运行deme 提供了 支付 查询 退款 交易关闭几个简单的接口demo 下载 https://docs.open.alipay.com/270/106291/ 转为mave项目 1.创建一个空的ma ...