亚游,  《南极》是一个科普剧,创作科普剧比普通的童话剧更有挑战性,不仅要考虑到故事的趣味性和吸引力,还要通过故事普及科学知识。作为该剧的编剧,王珏说她在创作《南极》的时候就十分注意这个问题。在写这个剧的之前,她看了很多关于南极、企鹅的书,还有影像资料,最后决定写一个关于南极小动物的故事,因为从孩子欣赏的角度,他们比较喜欢小动物,能够引起他们的兴趣。

2013年1月至2015年2月,任天津市供销合作总社党委书记、天津市人大农业与农村委员会副主任委员;过年摆地摊赚10万9.7英寸iPad Pro配备了1200万像素主摄像头和500万像素前置摄像头,因此我们希望iPad Pro 2至少也应该保持这个水准。虽然苹果从来都不会在像素上计较,但是9.7英寸iPad Pro已经比12.9英寸iPad Pro在像素上提升了不少。

发布于 2018-03-24 14:57:27 | 153 次阅读 | 评论: 0 | 来源: 网友投递

亚游这里有新鲜出炉的Redis 命令参考,程序狗速度看过来!

Redis Key-Value数据库

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。


这篇文章主要给大家介绍了关于利用Spring、Session和redis对Session进行共享的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

我们在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。

session的处理有很多种方法,详情见转载的上篇博客:亚游集群/分布式环境下5种session处理策略

在这里我们讨论其中的第三种方法:session共享。

redis集群做主从复制,利用redis数据库的最终一致性,将session信息存入redis中。当应用服务器发现session不在本机内存的时候,就去redis数据库中查找,因为redis数据库是独立于应用服务器的数据库,所以可以做到session的共享和高可用。

不足:

1.redis需要内存较大,否则会出现用户session从Cache中被清除。

2.需要定期的刷新缓存

初步结构如下:


但是这个结构仍然存在问题,redis master是一个重要瓶颈,如果master崩溃的时候,但是redis不会主动的进行master切换,这时session服务中断。

但是我们先做到这个结构,后面再进行优化修改。

Spring Boot提供了Spring Session来完成session共享。

官方文档:/docs0b0aspring0b0aio/spring-session/docs/current/reference/html5/guides/boot.html#boot-sample

首先创建简单的Controller:


@Controller 
public class UserController { 
 
 @RequestMapping(value="/main", method=RequestMethod.GET) 
 public String main(HttpServletRequest request) { 
 HttpSession session = request.getSession(); 
 String sessionId = (String) session.getAttribute("sessionId"); 
 if (null != sessionId) { /sessionId不为空 
 System.out.println("main sessionId:" + sessionId); 
 return "main"; 
 } else { /sessionId为空 
 return "redirect:/login"; 
 } 
 } 
 
 
 @RequestMapping(value="/login", method=RequestMethod.GET) 
 public String login() { 
 return "login"; 
 } 
 
 @RequestMapping(value="/doLogin", method=RequestMethod.POST) 
 public String doLogin(HttpServletRequest request) { 
 System.out.println("I do real login here"); 
 HttpSession session = request.getSession(); 
 String sessionId = UUID.randomUUID().toString(); 
 session.setAttribute("sessionId", sessionId); 
 System.out.println("login sessionId:" + sessionId); 
 return "redirect:/main"; 
 } 
} 

简单来说就是模拟一下权限控制,如果sessionId存在就访问主页,否则就跳转到登录页面。

那么如何实现session共享呢?

加入以下依赖:


<!-- spring session --> 
<dependency> 
 <groupId>org.springframework.session</groupId> 
 <artifactId>spring-session</artifactId> 
 <version>1.3.0.RELEASE</version> 
</dependency> 
<!-- redis --> 
<dependency> 
 <groupId>org.springframework.boot</groupId> 
 <artifactId>spring-boot-starter-redis</artifactId> 
</dependency> 

增加配置类:


@EnableRedisHttpSession 
public class HttpSessionConfig { 
 @Bean 
 public JedisConnectionFactory connectionFactory() { 
 return new JedisConnectionFactory(); 
 } 
} 

这个配置类有什么用呢?

官方文档:

The Spring configuration is responsible for creating a Servlet Filter that replaces the HttpSession implementation with an implementation backed by Spring Session. 

也就是说,这个配置类可以创建一个过滤器,这个过滤器支持Spring Session代替HttpSession发挥作用。

The @EnableRedisHttpSession annotation creates a Spring Bean with the name of springSessionRepositoryFilter that implements Filter. The filter is what is in charge of replacing the HttpSession implementation to be backed by Spring Session. In this instance Spring Session is backed by Redis.

@EnableRedisHttpSession注解会创建一个springSessionRepositoryFilter的bean对象去实现这个过滤器。过滤器负责代替HttpSession。

也就是说,HttpSession不再发挥作用,而是通过过滤器使用redis直接操作Session。

在application.properties中添加redis的配置:


spring.redis.host=localhost 
spring.redis.password= 
spring.redis.port=6379 

这样,就完成了Session共享了。是不是很简单?业务代码甚至不需要一点点的修改。

验证:

一开始redis数据库是空的。

运行项目:

访问页面之后,可以在redis中看到session的信息。

随便登陆之后:

进入到了main中。说明当前这个session中是存在sessionId的。

我们查看当前页面的cookie。也就是说,这个cookie是存在sessionId的。


再运行一个新的项目,端口为8081。在原本的浏览器中直接打开一个新的标签页,我们知道,这个时候cookie是共享的。访问localhost:8081/main


我们直接访问新的项目成功了!!同一个cookie,可以做到session在不同web服务器中的共享。

最后再次强调:

HttpSession的实现被Spring Session替换,操作HttpSession等同于操作redis中的数据。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对PHPERZ的支持。



相关阅读 :
亚游利用Spring Session和redis对Session进行共享详解
利用Spring Session和redis对Session进行共享详解
利用Spring Session和redis对Session进行共享详解
Redis教程(十三):管线详解
Redis教程(十):持久化详解
Redis教程(八):事务详解
Redis Sentinel服务配置流程(详解)
Redis Set 集合的实例详解
详解基于Spring Boot/Spring Session/Redis的分布式Session共享解决方案
详解Spring-Boot集成Spring session并存入redis
学习Spring-Session+Redis实现session共享的方法
spring boot与redis 实现session共享教程
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 亚游 All Rights Reserved   冀ICP备14009818号  亚游  广告服务
寻找围棋小先锋南京站开赛 赛前花絮先睹为快 男子假扮飞行员用宝马开顺风车 偶遇空姐骗88万 手机错输密码被误锁只能等48年? 呼吁开辟特殊通道 梅西也到这岁数了?罗马新星:我看他踢球长大的 天津商人犯行贿罪获刑 身跨黄兴国赵晋两张关系网 证券日报:A股市场只欢迎货真价实的“独角兽” 快讯:日乙福冈VS横滨FC等4场比赛因台风延期 皇家杯哈丁6杆优势夺走亚巡第二冠 刘晏玮T14 怎么才能让自己跑的更好? 5条黄金法则送给你 土方为S400军购回击北约:为啥不指责希腊买S300? 巴布亚新几内亚发生4.7级地震 震源深度10公里 再读监察法草案二审稿 最新最权威的解释都在这
女儿教室被同学奸杀 母亲为保存证据换了6个手机 阿富汗体育比赛发生爆炸恐怖袭击 至少8人死亡 国足名单国安三将入选 腰无力?施密特贡献两铁腰 外媒:喀麦隆获中国5000万美元军援 将用于购买武器 勇士大嘴突然转性了!说不想要第一了是因为啥 女子春节被老鼠整得团团转 借了只宠物猫仍无效果 数据趣谈:圣城首发5人得分仅33分近十年第二次 澳官方:去年80万人赴澳求学 中国最多占38% 券商积极筹备阿里、京东CDR,最快料三季度推出 京东旗下子公司向物流地产开发商ESR投资3.06亿美元 环球时报谈疫苗案:互联网舆论事件 中国能应对 李静海任国家自然科学基金委员会主任
捷克看守政府总理涉案被取消刑事豁免权 意甲将穿纪念球衣缅怀阿斯托里 赛前将为他默哀 郭士强:已经1个月没打比赛 北京比我们有优势 广州一男子在公交上点燃手中易燃物 已被警方控制 日本团队发现距地132.8亿光年的银河存在氧 上海市区两级工商和市场监管部门已约谈拼多多 萨拉赫力挺红军欧冠失误门将 保持坚强勿理会仇恨 他初中创业30多岁做成世界500强 今遭股债双杀 著名物理学家史蒂芬·霍金去世 享年76岁 加盟什么店最赚钱 两万元投资 需要钱的的给我打电话 女生最值得学的手艺 亚游