Redis

Laravel 基于redis队列的解析

柔情痞子 提交于 2020-10-09 00:22:04
为什么使用队列 使用队列的目的一般是: 异步执行 出错重试 解释一下: 异步执行 : 部分代码执行很耗时, 为了提高响应速度及避免占用过多连接资源, 可以将这部分代码放到队列中异步执行. Eg. 网站新用户注册后, 需要发送欢迎的邮件, 涉及到网络IO无法控制耗时的这一类就很适合放到队列中来执行. 出错重试: 为了保证一些任务的正常执行, 可以将任务放到队列中执行, 若执行出错则可以延迟一段时间后重试, 直到任务处理成功或出错超过N次后取消执行. Eg. 用户需要绑定手机号, 此时发送短信的接口是依赖第三方, 一个是不确定耗时, 一个是不确定调用的成功, 为了保证调用成功, 必然需要在出错后重试 Laravel 中的队列 以下分析默认使用的队列及其配置如下 默认队列引擎: redis 通过在 redis-cli 中使用 monitor 命令查看具体执行的命令语句 默认队列名: default 分发任务 此处以分发 异步通知( class XxxNotification implement ShouldQueue )为例. 在Laravel中发起异步通知时, Laravel 会往redis中的任务队列添加一条新任务 redis 执行语句 redis> RPUSH queues:default { "displayName": "App\\Listeners\

被腾讯、网易out后,我拿下字节跳动、vivo的offer(Java岗)

天大地大妈咪最大 提交于 2020-10-09 00:11:42
个人基本情况 双非大学本科毕业生,计算机专业,在校成绩偏上,之前的实习项目的成绩也都还不错,所以简历相比同学历的人来说还是算出彩的,这次秋招准备得挺早的,但一开始并不顺利,腾讯和网易打头阵的两家公司都被直接刷了,不过好在自己心态好,最终拿下了字节跳动和vivo的offer,现分享一下自己的面经和真题。 vivo(后台开发):笔试+一面+HR面 vivo一面(现场面40min) Static变量和方法有什么特点,能不能访问非静态成员,说一说为什么? Static方法能不能重写,为什么? 抽象类和接口的成员变量有什么差别? HashSet怎么实现的? HashMap怎么遍历的? 线性结构有哪些,二叉树属于吗? 二叉树最多有多少个节点?第k层有多少个节点? 冒泡排序怎么实现?怎么优化?两层循环各是干什么的? 多线程中wait和sleep方法的区别 MVC模式的实现 Hibernate怎么和上层交互,用过哪些数据库?你了解多少? 手写sql:查询从6.1开始到现在每天的评论数量;评论大于1000的数量(注意日期函数) 说说你之前做的项目 项目方法是自己提出来的还是有前人做过,有什么不同,改进在哪里? vivoHR面(20min) 自我介绍 有什么兴趣? 面试了哪些公司,拿到了哪些offer 为什么想要来vivo? 你在之前的项目里,有没有遇到什么困难?最后怎么解决的? 说说自己的优缺点。

阿里朋友推荐的两个Github标星25k的后端快速开发脚手架!

本秂侑毒 提交于 2020-10-08 15:52:17
01 eladmin eladmin 是一款基于 Spring Boot 2.1.0 、 Jpa、 Spring Security、redis、Vue 的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由。 如何获取项目地址和配套VIP文档地址? 扫码关注下面的公众号后回复“004”即可! 这个开源项目基本稳定,并且后续作者还会继续优化。完全开源!这个真的要为原作者点个赞,如果大家觉得这个项目有用的话,建议可以稍微捐赠一下原作者支持一下。后端整理代码质量、表设计等各个方面来说都是很不错的。前后端分离,前端使用的是国内常用的 vue 框架,也比较容易上手。 后台首页 02 pig 这个项目因为其方便易用、功能齐全,社区活跃,受到了很多Java开发者的喜爱,很多企业都采用 pig 搭建了自己的网站。 pig 提供了开源版和付费的商业版,商业版功能更加齐全一点。 另外,还提供了详细的技术文档。 如何获取项目地址和配套VIP文档地址? 扫码关注下面的公众号后回复“005”即可! 根据项目官网,简单介绍一下这个项目: 基于 Spring Cloud Hoxton 、Spring Boot 2.2、 OAuth2 的RBAC权限管理系统 基于数据驱动视图的理念封装 element-ui,即使没有 vue

首发Java程序员人手必备的进阶知识体系,“咸鱼翻身”的时候到了

Deadly 提交于 2020-10-08 10:25:17
前言 目前绝大部分的Java程序员都是处于增删改查的阶段,但是到了这个阶段后就应该考虑下一个层次的突破了, 总不能做一辈子的crud吧...... 以目前IT行业的发展趋势以及就业情况来看, 市场早已经不缺初级开发了,对于中高级开发人才倒是挺稀罕的,编程这一工作,如逆水行舟不进则退。技术不断更新,你可以设想一下,公司因为疫情的影响实在撑不下去了,你是不幸中枪的那一个, 你之后的工作该怎么找?你的工作经验是否能匹配行业当前的招聘要求呢? 当你的身体和思维已经形成了摸鱼划水的习惯,短期内迅速改变是非常困难的,你能做的只有循序渐进,接下来再过两个月即将迎来跳槽高峰期,不如趁早准备,每天抽出一点时间来学习,在金九银十收获一份满意的工作。 那么作为Java开发人员如何进阶,改变现状?其实这种问题在知乎上一搜一大把,里面有很多回答都很不错,可以供大家参考学习一下,但是说到底还是努力+坚持学习。 在市场上很少能够看到一套不错的学习笔记,小编也是花了挺久的时间总结了这份 《Java程序员人手必备的进阶知识体系》 ,帮助大家系统化高效的进阶学习,而不是零散低效的阅读。 2020全新Java核心知识 由于内容过多,本文篇幅有限,因此小编就不详细展示了,请各位老铁认真的看完本文内容,你一定会有所收获! (完整版本请在【评论+关注】后,私信关键词“学习”或者我看下方即可获取!) Java篇目录内容

SpringBoot 一个依赖搞定 session 共享,没有比这更简单的方案了!

对着背影说爱祢 提交于 2020-10-08 05:24:54
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 有的人可能会觉得题目有点夸张,其实不夸张,题目没有使用任何修辞手法!认真读完本文,你就知道我说的是对的了! 在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图: 在这样的架构中,会出现一些单服务中不存在的问题,例如客户端发起一个请求,这个请求到达 Nginx 上之后,被 Nginx 转发到 Tomcat A 上,然后在 Tomcat A 上往 session 中保存了一份数据,下次又来一个请求,这个请求被转发到 Tomcat B 上,此时再去 Session 中获取数据,发现没有之前的数据。对于这一类问题的解决,思路很简单,就是将各个服务之间需要共享的数据,保存到一个公共的地方(主流方案就是 Redis). 当所有 Tomcat 需要往 Session 中写数据时,都往 Redis 中写,当所有 Tomcat 需要读数据时,都从 Redis 中读。这样,不同的服务就可以使用相同的 Session 数据了。 这样的方案,可以由开发者手动实现,即手动往 Redis 中存储数据,手动从 Redis 中读取数据,相当于使用一些 Redis

分布式事务

安稳与你 提交于 2020-10-08 04:22:58
https://mp.weixin.qq.com/s/XknegP66mnYboiBx556Kzw 分布式事务 收录于话题 #程序员 1558 #程序人生 664 #分布式事务 25 因为之前版本图有丢失和乱序,出了这个修订版本 前言 上一篇文章已经讲完分布式了,那暖男说要讲分布式事务那就一定会讲,只是我估计大家没料到暖男这么快就肝好了吧? 事务想必大家并不陌生,至于什么是 ACID,也是老生常谈了。不过暖男为了保证文章的完整性确保所有人都听得懂,我还是得先说说 ACID,然后再来介绍下什么是分布式事务和常见的分布式事务包括 2PC、3PC、TCC、本地消息表、消息事务、最大努力通知。 事务 严格意义上的事务实现应该是 具备原子性、一致性、隔离性和持久性 ,简称 ACID。 原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行。 一致性(Consistency),可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是300,不会存在我账上钱加了,你账上钱没扣的 中间状态 。 隔离性(Isolation),指的是多个事务并发执行的时候不会互相干扰,即一个事务内部的数据对于其他事务来说是隔离的。 持久性(Durability)

提升查询效率

青春壹個敷衍的年華 提交于 2020-10-07 23:57:13
1,整体架构优化 一,主要思路是将功能从系统中拆出来 二,建立独立得数据库和redis缓存,该数据库和redis缓存只负责内部调用,不对外开放。 三,代码解耦方面,使用MQ对项目代码进行解耦。 四,框架选用swoole+swoft,swoft支持通用连接池mysql, redis, rpc。 2,业务优化 一,当前系统不需要大改,兼容现在得业务。 二,逻辑方面,文件数据新增,修改,删除建立消息队列,将数据同步到数据持久层;一级redis缓存直接面向用户,当一级redis缓存有数据丢失时,立即调用持久层二级redis数据;同样二级redis数据丢失时,可以使用二级DB恢复数据。 三,定时校验业务层和数据持久层得数据。 来源: oschina 链接: https://my.oschina.net/u/3290532/blog/4401292

5个可以写进简历的分布式开发实战项目

久未见 提交于 2020-10-07 15:55:30
给大家分享4个项目,别小看这四个项目。 互联网大部分公司项目用到的技术可能还没这几个项目用到的多。 都快2021年了,没有微服务、分布式的项目经验真的有点难了,其次在项目中用到的中间接比如Redis、MQ、Nginx、solr、ElasticSearch、Docker、Dubbo、Kafka、ShardingSphere等等。 从业务梳理到环境配置再到具体模块的代码实现,视频里都讲的都很细致,而且提供源码! 以下项目均为视频版本,包含源码和课堂笔记 项目分别是: 青橙商城完整版 后台+前台+青橙秒杀 Java大型电商系统谷粒商城项目开发实践 淘淘商城 (分布式基于SS M ) 大型微服务项目十次方 【乐优商城】项目(SpringBoot、SpringCloud、Vue) 以上2个项目获取方式 扫描下方二维码,回复 「 项目 」 👆 长按上方二维码 2 秒 回复「 项目 」即可获取实战项目 部分截图大家感受一下。 图片可上下滑动 另外在平时在学习的时候有画思维导图的习惯,一方面加强自己的记忆,另一方面也方便自己复习。 分享一些学习的思维导图,包括具体内容看下图吧!真的是太良心了 完整思维导图获取方式: 1、扫描下方二维码 2、回复关键字: 导图 👆长按上方二维码 2 秒 回复「 导图 」 即可获取资料 本文分享自微信公众号 - Java专栏(finishbug)。 如有侵权,请联系

架构取经之路3

岁酱吖の 提交于 2020-10-07 15:54:25
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨悟空聊架构 来源丨悟空聊架构 (PassJava666) 阅读目录 一、背景 二、“大唐啥都有”网站的代码 三、SQL 中的事务 四、那如何优化无事务的代码? 五、如何解决无事务的问题? 六、具有补偿功能的解决方案 七、还有哪些不足? 架构取经之路1 - 扣减库存 架构取经之路2 - 熔断机制 架构取经之路3 - 悟空聊无事务 一、背景 悟空和师父一行人正在前往西天取经的路上,师父在线上买了一个福袋,订单状态显示订单已支付,但是电子福袋状态为未发送。 悟空来到了这家网站的后台,找到了开发人员“小黑熊”。 悟空:嘿,快查下我师父的订单,钱都给了,福袋怎么还没有到? 小黑熊:大圣,我们也收到异常通知了,更新福袋表的时候因网络原因导致福袋记录没有更新成功,所以福袋还是未发送的。 悟空:福袋没发出来,那为什么订单状态还一直是已支付?你这小儿,可不要瞒我! 小黑熊:大圣,我们数据库用的是MongoDB 3.0,不支持事务啊。 悟空:你说的事务是什么意思? 小黑熊:事务就是保持多个更新或删除或增加操作,要么都成功,要么都失败。 悟空:也就是说第一步顶单状态从未支付到订单成功已经执行成功了,但是第二步更新福袋的时候失败了

熬了一个通宵,终于把7千万个Key删完了

China☆狼群 提交于 2020-10-07 07:31:58
“ 由于有一条业务线不理想,高层决定下架业务。对于我们技术团队而言,其对应的所有服务器资源和其他相关资源都要释放。 图片来自 Pexels 释放了 8 台应用服务器;1 台 ES 服务器;删除分布式定时任务中心相关的业务任务;备份并删除 MySQL 数据库;删除 Redis 中相关的业务缓存数据。 CTO 指名点姓让我带头冲锋,才扣了我绩效……好吧,冲~ 其他都还好,不多时就解决了。唯独这删除 Redis 中的数据,害得我又熬了一个通宵,真是折煞我也! 难点分析 共用 Redis 服务集群 由于这条业务线的数据在 Redis 大概在 3G 左右,完全没必要单独建一个 Redis 服务集群,本着能节约就节约的态度,当初就决定和其他项目共享一个集群(这个集群配置:16 个节点,128G 内存,还算豪华吧~) 集群配置如下: 在这种共用集群的情况下,导致无法简单粗暴的释放。因此只能选择删除 Key 的方式。 Key 命名不规范 要删除 Key,首先就要精准的定位出哪些 Key 需要删除,如果勿删 Key,会影响到其他服务正常运转! 如果 Key 本身设置了过期时间,但有些数据需是持久化的。然而那该死的项目经理一直催项目进度,导致开发人员在开发过程中很多地方都没有设计到位。 比如 Redis Key 散落在项目代码的每个角落;比如命名不是很规范。 真不知道是怎么 Review 代码!哦