当前位置:   article > 正文

三、Redis在SpringBoot中使用案例(1)_redis springboot 应用案例

redis springboot 应用案例

================================================================

最初的目的就想要在项目中把Redis用起来,然后最近公司的项目全部需要转成springboot,所以现在的项目都是Springboot的,自己刚好也研究下Springboot的。所以才有了下文的案例。

项目结构以及相关配置

========================================================================

先创建一个springboot 项目,目录结构大体如下。

在这里插入图片描述

在pom.xml 加入依赖

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-data-redis

org.projectlombok

lombok

org.apache.commons

commons-pool2

说明一下,第一个依赖starter-web 是创建web应用的依赖。lombok 是我自己添加的一个依赖用来注解日志,属性的get/set方法比较方便,其他的三个依赖就是项目中使用redis的依赖啦,一般项目中想要使用redis引入这三个依赖就可以了。

在application.properties中配置redis

#配置redis

Redis数据库索引(默认为0)

spring.redis.database=0

Redis服务器地址

spring.redis.host=192.168.252.53

Redis服务器连接端口

spring.redis.port=6379

Redis服务器连接密码(默认为空)

spring.redis.password=

连接池最大连接数(使用负值表示没有限制) 默认 8

spring.redis.lettuce.pool.max-active=8

连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1

spring.redis.lettuce.pool.max-wait=-1

连接池中的最大空闲连接 默认 8

spring.redis.lettuce.pool.max-idle=8

连接池中的最小空闲连接 默认 0

spring.redis.lettuce.pool.min-idle=0

创建Dao层

====================================================================

创建dao 包,创建一个User 类,这里使用了lombok提供的@Getter 和@Setter 非常方便,代码看着也很简洁。

import lombok.Getter;

import lombok.Setter;

import java.io.Serializable;

@Getter

@Setter

public class User implements Serializable {

private static final long serialVersionUID = 1L;

private Long id;

private String userName;

private String password;

private String email;

private String nickname;

private String regTime;

public User(String email, String nickname, String password, String userName, String regTime) {

super();

this.email = email;

this.nickname = nickname;

this.password = password;

this.userName = userName;

this.regTime = regTime;

}

}

创建Service层

========================================================================

创建一个service 包,创建一个RedisService类,代码如下:

import com.zlf.learning.Redis.dao.User;

import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.data.redis.core.ValueOperations;

import org.springframework.stereotype.Service;

@Service

@Slf4j

public class RedisService {

@Autowired

private RedisTemplate redisTemplate;

public boolean setUser(User user){

ValueOperations ops=redisTemplate.opsForValue();

ops.set(user.getNickname(),user);

log.info(“{}”,user.toString());

return true;

}

public User getUser(String name){

ValueOperations ops=redisTemplate.opsForValue();

return (User) ops.get(name);

}

}

这里面的代码也非常的清晰,使用到的RedisTemplate ,类似于JdbcTemplate .

ValueOperations ops=redisTemplate.opsForValue();就是连接了redis数据库。之后就可以从redis 中获取和添加值啦。

Controller层

=========================================================================

创建一个controller 包,创建一个RedisController类代码如下:

@RestController

public class RedisController {

@Autowired

private RedisService redisService;

@RequestMapping(“/getUser”)

public User getUser(){

String name=“quellan”;

return redisService.getUser(name);

}

@RequestMapping(“/setUser”)

public String setUser(){

User user=new User(“aa@qq.com”,“quellan”,“123456”,“朱”,new Date().getTime()+“”);

redisService.setUser(user);

return “添加成功”;

}

}

测试

================================================================

到此为止基础的就已经完全搭建好了,可以测试运行下。启动spring boot项目

在这里插入图片描述

在这里插入图片描述

在redis查一下,发现redis中的key 值并不是我们设置的quellan ,而是一串。这就很难受啦。

在这里插入图片描述

查了一下,原来是使用的RedisTemplate ,spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化.这个具体的放在下一章讲吧,感觉一会讲不完,先跳过哈哈。

上面的测试说明项目中已经可以正常使用redis啦。

Session共享

=======================================================================

按理说到上面就已经差不多,接下来来点骚操作。

分布式怎么共享session。简单来说就是一个项目部署了多个,怎么确保一个用户访问不同的项目(用户实际是无感知的,通过Nginx转发,实现负载均衡)时确保session一致。盗一张图来展示一下吧。

在这里插入图片描述

这张图就是多个Tomcat,那怎么实现session共享呢,就是把session存到redis中,每次去就从redis中取,这样就保证了session共享啦。

那这样是不是每次存session都需要手动存到redis中呢,常理来说当然是的,但是既然是SpringBoot 当然需要不一样啦,只需要增加一个依赖,人家就能帮你自动的加载到redis中。下面来看

增加依赖


org.springframework.session

spring-session-data-redis

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。

我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。

不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
pg" alt=“img” style=“zoom: 33%;” />

最后

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。

我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。

不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/892842
推荐阅读
相关标签
  

闽ICP备14008679号