前言

刚进入到Java 开发的世界,对于小白Java的我来说,使用Maven + SpringBoot 的项目下启动redis;

第一步 本地安装Redis 服务

关于redis的教程链接 点击这里:https://www.runoob.com/redis/redis-install.html

由于我是Mac 上开发因此安装如下:

1. 下载redis 安装包

  1. $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
  2. $ tar xzf redis-2.8..tar.gz
  3. $ cd redis-2.8.
  4. $ make

备注:上面的下载后可以解压到你自己的人以目录

2. 启动redis 服务

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

下面启动redis服务.

  1. $ cd src
  2. $ ./redis-server

3. 启动服务后进行客户端链接测试

  1. $ cd src
  2. $ ./redis-cli
  3. 127.0.0.1:> set foo bar
  4. OK
  5. 127.0.0.1:> get foo
  6. "bar"

这里可以看到本地的地址和端口分别为: 127.0.0.1   和 6379     基本端口是不会变的。

到这里为子,我们的redis 本地服务算是安装完成。

第二步 idea 配置以及代码处理

1. pom.xml 文件中引入依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>

2. application.yml(或applicationx.xml)之中 配置redis服务信息

由于我的工程是使用yml 那么这里就以yml 为主:

  1. # Redis 配置
  2. redis:
  3. database: 0 #数据库索引(默认为0)
  4. host: 127.0.0.1
  5. port: 6379 #默认链接端口
  6. password: #默认为空
  7. lettuce:
  8. pool:
  9. max-active: 8 #最大链接池
  10. max-wait: -1 #最大阻赛等待时间(使用负值没有限制)默认为-1
  11. max-idle: 8 #连接池中的最大空闲连接 默认 8
  12. min-idle: 0

3. 编写简单代码测试

  1. package com.king.controller;
  2.  
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.data.redis.core.StringRedisTemplate;
  5. import org.springframework.web.bind.annotation.*;
  6.  
  7. @RestController
  8. @RequestMapping("/redis")
  9. @ResponseBody
  10. public class RedisStringController {
  11. @Autowired
  12. private StringRedisTemplate stringRedisTemplate;
  13.  
  14. @PutMapping("/string/put")
  15. public void put(String key , @RequestParam(required = false,defaultValue = "default") String value){
  16. stringRedisTemplate.opsForValue().set(key, value);
  17. }
  18.  
  19. @GetMapping("/string/get")
  20. public Object get(String key){
  21. return stringRedisTemplate.opsForValue().get(key);
  22. }
  23. }

上面测试代码分别写了 一个 put 提交 和一个get请求

4. 运行测试(Run)

我这里代码是PUT 方式,所以不能直接在浏览器上进行访问,这里我就使用最简单的curl命令进行请求。

打开自己的终端,执行以下命令:

执行put 数据存储操作

  1. $ curl -X PUT --data 'key=kingbo&value=ok' http://127.0.0.1:8080/redis/string/put

执行get 获取操做

  1. $ curl http://127.0.0.1:8080/redis/string/get\?key\=kingbo
  2. ok

第三部  实现redis进行Java对象模型存储

在上述使用中,是无法存储对象的,存储对象的话需要使用RedisTemplate并且要使用响应的序列化机制,下面我们就来测试下:

1. 引入序列化的jar包,这里我们是使用jackson

在pom.xml 文件中,添加依赖

  1. <!-- redis 对象存储相关配置-->
  2. <dependency>
  3. <groupId>com.fasterxml.jackson.core</groupId>
  4. <artifactId>jackson-core</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.fasterxml.jackson.core</groupId>
  8. <artifactId>jackson-databind</artifactId>
  9. </dependency>

2. 在Java工程中添加 RedisConfig文件

  1. package com.king.config;
  2. /*
  3. * 文档地址
  4. * http://www.ityouknow.com/springboot/2016/03/06/spring-boot-redis.html
  5. *
  6. *
  7. * */
  8.  
  9. import org.springframework.cache.annotation.EnableCaching;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.data.redis.connection.RedisConnectionFactory;
  13. import org.springframework.data.redis.core.RedisTemplate;
  14. import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
  15. import org.springframework.data.redis.serializer.StringRedisSerializer;
  16.  
  17. @Configuration
  18. //@EnableCaching
  19. public class RedisConfig {
  20. @Bean
  21. public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
  22. RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
  23.  
  24. //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
  25. redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
  26. redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
  27.  
  28. //使用StringRedisSerializer来序列化和反序列化redis的ke
  29. redisTemplate.setKeySerializer(new StringRedisSerializer());
  30. redisTemplate.setHashKeySerializer(new StringRedisSerializer());
  31.  
  32. //开启事务
  33. redisTemplate.setEnableTransactionSupport(true);
  34.  
  35. redisTemplate.setConnectionFactory(redisConnectionFactory);
  36. return redisTemplate;
  37. }
  38.  
  39. }

3. 添加测试controller

  1. package com.king.controller;
  2.  
  3. import com.king.pojo.User;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.data.redis.core.RedisTemplate;
  6. import org.springframework.web.bind.annotation.*;
  7.  
  8. @RequestMapping("/redis/object")
  9. @RestController
  10. public class RedisObjectController {
  11. @Autowired
  12. private RedisTemplate redisTemplate;
  13.  
  14. @GetMapping("/get/{username}")
  15. public Object get(@PathVariable("username") String username){
  16. return redisTemplate.opsForValue().get(username);
  17. }
  18.  
  19. @PutMapping("/put")
  20. public void put(String username,Integer age,Integer id){
  21. User user= new User();
  22. user.setId(id);
  23. user.setAge(age);
  24. user.setUsername(username);
  25. redisTemplate.opsForValue().set(username,user);
  26. }
  27.  
  28. }

其中我这里的User 模型代码如下

  1. package com.king.pojo;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class User implements Serializable {
  6. private Integer id;
  7. private String username;
  8. private Integer age;
  9.  
  10. public Integer getId() {
  11. return id;
  12. }
  13.  
  14. public void setId(Integer id) {
  15. this.id = id;
  16. }
  17.  
  18. public String getUsername() {
  19. return username;
  20. }
  21.  
  22. public void setUsername(String username) {
  23. this.username = username;
  24. }
  25.  
  26. public Integer getAge() {
  27. return age;
  28. }
  29.  
  30. public void setAge(Integer age) {
  31. this.age = age;
  32. }
  33. }

4. 运行测试

数据上传

  1. $ curl -X PUT --data 'username=jinlingbo&age=18&id=1' http://127.0.0.1:8080/redis/object/put

数据查询(get 操作可以直接在浏览器访问)

  1. $ curl http://127.0.0.1:8080/redis/object/get/jinlingbo
  2. {"id":,"username":"jinlingbo","age":}%

已经打印出结果

参考文献

https://segmentfault.com/a/1190000017805065

https://www.runoob.com/redis/redis-install.html

Maven + Springboot + redis 配置的更多相关文章

  1. springboot +redis配置

    springboot +redis配置 pom依赖 <dependency> <groupId>org.springframework.boot</groupId> ...

  2. redis 安装使用 & SpringBoot Redis配置

    1.安装 https://www.cnblogs.com/dingguofeng/p/8709476.html https://www.runoob.com/redis/redis-keys.html ...

  3. Springboot+Redis 配置和使用

    pom.xml 引入redis 开启缓存 <!-- cache --> <dependency> <groupId>org.springframework.boot ...

  4. SpringBoot cache-control 配置静态资源缓存 (以及其中的思考经历)

    昨天在部署项目时遇到一个问题,因为服务要部署到外网使用,中间经过了较多的网络传输限制,而且要加载arcgis等较大的文件,所以在部署后,发现页面loading需要很长时间,而且刷新也要重新从服务器下载 ...

  5. springboot中配置主从redis

    测试redis的主从配置 redis实例 文件夹名称如下 redis_master_s redis_slaver1_s redis_slaver2_s redis.conf文件 master的redi ...

  6. springboot学习笔记-4 整合Druid数据源和使用@Cache简化redis配置

    一.整合Druid数据源 Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,Druid在监控,可扩展性,稳定性和性能方面具有比较明显的优势.通过Druid提供的监控功能,可以实时观察数据库 ...

  7. SpringBoot + Redis:基本配置及使用

    注:本篇博客SpringBoot版本为2.1.5.RELEASE,SpringBoot1.0版本有些配置不适用 一.SpringBoot 配置Redis 1.1 pom 引入spring-boot-s ...

  8. SpringBoot Redis序列化配置

    Redis配置 #Redis spring.redis.host= spring.redis.port=6379 spring.redis.database=0 # Redis服务器连接密码(默认为空 ...

  9. 从源码研究如何不重启Springboot项目实现redis配置动态切换

    上一篇Websocket的续篇暂时还没有动手写,这篇算是插播吧.今天讲讲不重启项目动态切换redis服务. 背景 多个项目或微服务场景下,各个项目都需要配置redis数据源.但是,每当运维搞事时(修改 ...

随机推荐

  1. Delphi多线程详解

    (整理自网络) Delphi多线程处理 1-1多线程的基本概念 WIN 98/NT/2000/XP 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用CPU 运行时间和资源,或者 ...

  2. 第48章 MDK的编译过程及文件类型全解

    Frm: http://www.cnblogs.com/firege/p/5806134.html 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教 ...

  3. sed 删除含有某个字符串的行 (在文件txt)

    #删除a.txt中含有“aaa”的行 sed -i “/aaa/d” a.txt

  4. base64图片下载

    下面这种写法有些chrome不起作用 downLoadCanvas (data, filename = '活动.png') { var saveLink = document.createElemen ...

  5. MySql 主从复制及深入了解

    分享一个不错的mysql文章 https://segmentfault.com/a/1190000008942618

  6. 2019ICPC南京网络赛F Greedy Sequence

    题意:对于1<=i<=n每次找到(pos[i]-k,pos[i]+k)内不大于i的最大那个数,ans[i]=ans[mx]+1,若ans[mx]未知则递归处理ans[mx] PS:这个题比 ...

  7. WebServer Project-02-XML解析

    XML:Extensible Markup Language,可扩展标记语言,左卫门数据的一种存储格式或用于存储软件的参数,程序解析此配置文件,就可以达到不修改代码就能更改程序的目的. <?xm ...

  8. 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 ...

  9. PL SQL 存储过程 SQL SERVER创建存储过程及调用,Oracle创建存储过程及调用

    Oracle使用存储过程实例: 例1: //查出表字段赋值给存储过程变量 create proc proc_stu @sname varchar(20), //默认是输入参数(input),另外还有两 ...

  10. 支付宝支付接口-运行支付宝demo

    运行deme 提供了 支付  查询 退款 交易关闭几个简单的接口demo 下载 https://docs.open.alipay.com/270/106291/ 转为mave项目 1.创建一个空的ma ...