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

配置上面已经配置好了

增加SpringSession 类


在controller 包中加一个SpringSession 类,命名可能不太规范,见谅哈

@RestController

public class SpringSession {

@Value(“${server.port}”)

Integer port;

@RequestMapping(“/setSession”)

public String setSession(HttpSession session){

session.setAttribute(“key”,“quellanAn”);

return String.valueOf(port);

}

@RequestMapping(“/getSession”)

public String getSession(HttpSession session){

return session.getAttribute(“key”)+“:”+port;

}

}

代码很简单,就是session存一个值,get获取。这里可以看到没有任何操作redis数据库的对吧。

测试场景1


先运行项目,查看一下

在这里插入图片描述

在这里插入图片描述

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

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。

以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考

一份还热乎的蚂蚁金服面经(已拿Offer)面试流程4轮技术面+1轮HR

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

//bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐