spring-cloud微服务(6) redis-cluster cookie
2020-07-31 21:27
841 查看
文章目录
概述
利用redis来存储数据,优先访问redis,再访问数据库,提高查询效率。
- redis的存储规则是key-value的形式.如set name[key] zb[value]。
- 存储在内存中,效率高。
实际开发中有单节点,哨兵进程管理主从,两两相连的cluster.
redis-cluster的搭建
而redis-cluster是通过key连接槽道,槽道连接指定节点。若节点宕机,可以通过迁移槽道,做到key的迁移。
主节点和从节点做备份,集群各节点之前两两相连。
1.启动redis的集群脚本后,查看集群状态
进入任意节点,查看状态
]# redis-cli -c -h [host] -p [port] //进入指定节点
]# cluster nodes //获取节点状态
集群中有3个master,3个slave, 各节点之间两两相连。每个master有一个slave备份。
上述信息的含义是:
1.节点ID 2.节点IP:端口号 3.节点角色 4.当前主节点ID 5.创建时间 6.操作时间 7.在集群中的编号 8.状态 9.所属于的槽道
2.spring-cloud添加redis
application.properties添加配置:
# redis配置 # 单节点 #spring.redis.host= #spring.redis.port=9000 # 哨兵集群 #spring.redis.sentinel.nodes=10.9.9.9:26379,10.10.0.0:26380 #spring.redis.sentinel.master=zbmaster # redis-cluster集群 spring.redis.cluster.nodes=10.42.154.11:8000,10.42.154.11:8001,10.42.154.11:8002
pom.xml配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> <!--jedis依赖--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <!--springboot整合的redis依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency>
3.代码编写
编写一个登陆接口,将登陆信息存放在cookie和redis中,读取显示一下
controller
将ticket存入cookie
@RequestMapping("/user/manage/login") public SysResult doLogin(User user, HttpServletRequest request, HttpServletResponse response) { String ticker = iuser.doLogin(user); if ("".equals(ticker) || ticker == null) { return SysResult.build(201, "登录失败", null); }else { CookieUtils.setCookie(request, response, "EM_TICKER", ticker); return SysResult.ok(); } }
先查询redis是否已经存在key,存在则删除
再计算新的(ticket, 用户信息json)写入redis.
@Override public String doLogin(User user) { String ticket=""; //数据库中查询的操作忽略了,这里只是一个演示,不重要 ticket="EM_TICKET_"+user.getUser_name()+System.currentTimeMillis(); String loginKey="login_"+user.getUser_name(); if(template.hasKey(loginKey)){ //登录过,取ticket String ticketLaster=template.opsForValue().get(loginKey); //删除ticket记录 template.delete(ticketLaster); } try { String userJson=mapper.writeValueAsString(user); template.opsForValue().set(ticket,userJson, 60*60*2, TimeUnit.SECONDS); template.opsForValue().set(loginKey,ticket, 60*60*2,TimeUnit.SECONDS); return ticket; } catch (JsonProcessingException e) { e.printStackTrace(); return ""; } }
相关文章推荐
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十五)使用Redis做集中式缓存(1)
- 一起来学SpringCloud之 - 高可用服务注册中心(Eureka-Cluster)
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十六)使用Redis做集中式缓存(2)
- SpringCloud SpringBoot mybatis 分布式微服务(十二)Spring Boot中使用Redis数据库
- springcloud服务网关--Cookie和动态路由
- Spring Cloud+Redis cluster+Spring Cache配置
- SpringCloud微服务——基于security+oauth2的安全保护(四):授权服务之redis存储token
- SpringCloud SpringBoot mybatis 分布式微服务(二十四)整合Redis
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十一)使用Redis数据库(1)
- JVM虚拟机调优,Dubbo分布式框架,Springcloud微服务架构,Redis主从复制
- 分布式微服务架构springmvc+springboot+springcloud+redis
- SpringCloud实现Redis在各个微服务的Session共享问题
- Spring Cloud Spring Boot mybatis分布式微服务云架构(二十二)使用Redis数据库(2)
- Spring系列学习之Spring Cloud Cluster 微服务集群
- SpringCloud(第 054 篇)简单 Quartz-Cluster 微服务,采用注解配置 Quartz 分布式集群
- SpringCloud服务调服务
- 视频教程-SpringCloud+Consul+Docker搭建微服务架构-Java
- 菜鸟的微服务之旅(3)---springCloud(1)
- SpringCloud 微服务基本概念
- 使用Spring Cloud Consul实现服务的注册和发现