Redis

膜拜!腾讯顶配SpringBoot进阶宝典,完美贴合开发实际

旧巷老猫 提交于 2020-09-30 16:07:44
前言 在过去的几年时间里,最让人兴奋、回头率最高、最能改变游戏规则的东西,大概就是SpringBoot了。它基于约定大于配置原则,甚至有望能够在蓬勃发展的快速应用开发领域成为其领导者。 目前JAVAEE应用体系中繁重的配置、低下的开发效率、高难度的三方集成, 复杂的部署流程等等一直被开发人员所诟病。随着整个架构体系的变化,企业对技术的要求也在变化,现在的企业更注重技术的开箱即用,更注重技术在生态圈中的深度融合,更注重轻量级的运维。因而Springboot这个技术显得尤为重要。 能学好Springboot肯定是能在自己的求职简历上添上一个亮点。学习的过程中有一本好的工具书作为参考其实也是尤为重要的。下面我要介绍的这份 腾讯内部Springboot进阶文档 就用大量的篇幅对比讲解多种同类技术的知识点、使用和区别,大家可以根据自己的喜好进行技术选型;还 讲解了时下流行的接口架构风格RESTful,以及用来实现高并发的Redis和系统间通信的中间件RabbitMQ 最后更是融合了所讲的全部知识点,讲解了两个常用又实用的实战项目。 篇幅限制只能将重点内容展示出来了,需要这份腾讯SpringBoot文档的朋友,获取方式在文末!!! 入门篇 初识Spring Boot 准备开发环境 搭建环境 熟悉Maven 使用开发工具 安装开发工具IDEA及插件 比较IDEA与Eclipse 基础篇

高并发下为什么更喜欢进程内缓存

笑着哭i 提交于 2020-09-30 15:32:33
进程内缓存是指缓存和应用程序在相同地址空间。即同一个进程内。分布式缓存是指缓存和应用程序位于不同进程的缓存,通常部署在不同服务器上。 从前有个机构,机构的主人叫做 CPU,这个机构专门派仆人取一些东西然后做相应的处理。下面是这个机构日常的场景。 以上故事纯属预估数据,真实数据会根据不同的硬件配置和网络环境有误差。 通过以上不正经的小故事,我们可以了解到cpu取各个设备数据的大体差距。至于YY妹子的问题,大家也应该了解了。 首先把数据从磁盘加载到内存做缓存,这个是对的。毕竟磁盘的IO速度比内存要慢的多。就拿我们现在使用的大多数PC机以及服务器来说,磁盘往往是性能的瓶颈。 如果有条件或者框架支持可以实现进程内缓存,我还是推荐使用进程内缓存,毕竟类似Redis这样的kv存储和应用程序多数情况不在一台服务器上,虽然局域网的速度肉眼看起来非常快,但是对于cpu来讲,还是让cpu休了一个大假。 至于什么情况下适合应用进程内缓存,我觉得有几点需要注意: 相同的请求或者设置的相同缓存key的请求每次都是同一个服务器上的同一个程序去处理,这样这个请求的缓存正常情况下只会产生一份。 如果每次请求都会路由到不同的服务器,便会产生多个缓存的副本,维护这些缓存数据的一致性是需要代价的。 当有新的服务器节点加入或者服务器节点退出的时候,不能发生雪崩现象,所有缓存请求都穿透到达数据库,那是比较要命的

Redis秒杀系统架构设计-微信抢红包

别等时光非礼了梦想. 提交于 2020-09-30 15:16:52
导读    前二天 我 写 了一篇, Redis高级项目实战 ( 点我直达 ), SpringBoot整合Redis附源码 ( 点我直达 ), 今天 我们来 做 一下 Redis秒杀 系统的设计。当然啦, Redis基础 知识 还不过关的 , 先去加强下自身内功 ,然后在回来看这篇, Redis基础知识 (点我直达 )。为啥写这个微信抢红包项目呢,公司0202年08月22日,公司周年庆,抢了100多红包🧧,O(∩_∩)O哈哈~ 微信抢红包 实现原理 业务流程分析 功能拆解 新建红包    在DB 、 Redis 分别 新增一条记录 抢红包( 并发 )    请求Redis , 红包剩余个数 , 大于0 才可以 拆 , 等会0 时,提示用户, 红包已抢完 拆红包( 并发 ) 用到技术   Redis 中数据类型的 String特性 的 原子递减 ( DECR key ) 和 减少指定值 ( DECRBY key decrement ) 业务 请求Redis ,当 剩余红包个数大于0 , 红包个数 原子 递减 ,随机 获取红包 计算金额 ,当最后一个红包时,最后一个红包金额=总金额-总已抢红包金额 更新数据库 查看红包记录    查询DB 即可 数据库表设计 红包流水表 CREATE TABLE `red_packet_info` ( `id` int ( 11 ) NOT NULL

偷喝咖啡的瓦力

孤街浪徒 提交于 2020-09-30 13:30:04
J2Cache 是一个两级的缓存框架,第一级是基于内存的数据缓存,支持 caffeine、ehcache2 和 ehcache3 ,二级缓存只支持 redis。 在某些生产环境中你可能没有 redis,但是又希望多个应用节点间... 来源: oschina 链接: https://my.oschina.net/u/4415089/blog/4523317

北漂女程序员工作7年来面试要价26K,该不该要她?

戏子无情 提交于 2020-09-30 12:04:05
话说: 前段时间面试了一位程序媛,差不多下午3点左右来我们部门面试,于是老板喊人接待了她,我们来简单看看这位程序媛的简历吧。 提前说明这篇文章只是为了帮助大家应聘时应该注意哪些问题,可以跟自己的简历对比下,找找差距,也是帮助大家。 简历 姓名:张xx 性别:女 出生日期:1992年6月 民族:汉 籍贯:山东 工作意向:Java开发 教育背景:西安电子科技大学 软件xx专业 至于邮箱和QQ,电话这些,就不透露了。 个人技能 ● 熟悉spring mvc 、spring、mybatis 等框架 ● 熟悉 redis 、rocketmq、dubbo、zookeeper、netty 、nginx、tomcat、mysql。 ● 阅读过juc 中的线程池、锁的源码以及netty 中的主从多线程源码。 ● 了解 spring boot、spring cloud 、elasticsearch 、kafka 等。 ● 了解jvm 的内存模型、类加载机制等相关知识 整理了2020年最新大厂面试题。 链接: 点这个,点这个。 暗号:csdn,加入即得。 项目经验 xx系统 系统为银行客户提供优惠买单功能,激发银行各类卡用户的消费活跃度,以及通过优惠买单为银行拓展新的用户等。系统主要包括商户管理、订单管理、 用户管理、库存管理等子系统。(ssm 、dubbo 、rocketmq、redis、jdk1.7

首次公开!阿里巴巴技术团队共同携手编写的“大厂面试参考指南”v1.0版本

倾然丶 夕夏残阳落幕 提交于 2020-09-30 10:02:14
这份文档由阿里巴巴架构师牵头,联合了部门上上下下 P6 - P8 级岗位众人的意见,1.0版本由此诞生。( 这阵容,质量就不用我多说了吧 )内容非常全面,主要是结合了互联网大厂的面试需求点,包含了: 分布式架构(大型网站系统的特点+架构演化发展历程+微服务) 中间件技术(缓存+消息队列+搜索引擎) 大数据与高并发技术(秒杀架构设计+数据库架构+阿里巴巴商品信息存放技术+限流算法) 数据库(索引+开发规范+范式+事务+MVCC) 设计模式与实践(常用设计模式+AOP/IOC+Zookeeper) 数据结构与算法(常见算法+红黑树等+HashMap) 虚拟化技术(JVM内存管理+Docker+Jenkins) 面试题实例(真实面试场景提问) 每个知识点都有左侧导航书签页,看的时候十分方便,由于内容较多,这里就截取一部分图吧。需要的记得帮忙点个赞支持一下, 点这里就可以免费拿到这份阿里巴巴架构师牵头总结的“大厂面试参考指南” ! 设计模式与实践 OOP五大原则SOLID 单一责任原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口分离原则 面向切面编程(AOP)+控制反转IOC 基本思想 登录验证 基于RBAC的权限管理 日志记录 事务处理 统一异常处理 设计模式 代理模式 工厂模式 观察者模式 Zookeeper ZK简述 存储结构 应用场景 写数据流程 Leader选举 中间件 缓存

Redis-五大数据类型实现原理

风流意气都作罢 提交于 2020-09-30 07:41:53
一、前言 在Redis底层中,有六种数据结构(简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表),但Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是String、Hash、List、Set、ZSet五大数据类型,每一种数据类型都至少用到了一种数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型判断一个对象是否可以执行给定的命令,而且可以针对不同的场景,为对象设置多种不同的数据结构,从而优化对象在不同场景下的使用效率。 一、对象的类型与编码 Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对象都是由 redisObject 结构来表示: typedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层数据结构的指针 void *ptr; //引用计数 int refcount; //记录最后一次被程序访问的时间 unsigned lru:22; }robj 1.1 type属性 对象的type属性记录了对象的类型,这个类型就是前面讲的五大数据类型: 可以通过如下命令来判断对象类型

Java基于队列和数据库批量维护用户在线离线状态和位置信息

生来就可爱ヽ(ⅴ<●) 提交于 2020-09-30 07:39:22
目录 前言介绍 用户数据迁移 用户状态数据批量处理 队列数据批量消费 前言介绍 系统用户实时位置都保存在redis中,我们采用redis过期方式来监听用户位置离线,离线的用户key会放入对应的队列进行消费(这里的队列可以是Java队列也可以是RabbitMQ之类的消息中间件,我们采用的是ConcurrentLinkedQueue)。项目中对用户实时位置有两个要求(特殊行业对人员位置安全规范的要求): a.用户最后一次经纬度实时位置更新到数据库 b.用户离线后更新用户在线状态 为了解决每次用户位置心跳更新导致数据库连接不足问题,我采用了批量更新的方式来解决大批量的用户上线和离线更新。解决了如下问题: a.解决用户状态表统计数据不一致问题 b.解决数据库更新占用数据库连接过多问题(可实现批量更新上线状态位置和离线状态,最后一次位置保存更新降低数据库压力) c.解决redis和database在线状态延迟过大问题 用户数据迁移 针对需要维护最后用户在线位置数据的这类用户,我们有单独用户角色加以限定。这种用户只需要简单将数据做个分表保存起来就可以了。首次初始化这类数据是根据已有用户数据直接采用SQL 支持的SELECT [A,B,....] INTO TABLE_SUB FROM TABLE_MAIN 示例脚本如下: -- 注意:======依赖触发器更新用户信息===== -- 修改目的

Redis秒杀系统架构设计-微信抢红包

巧了我就是萌 提交于 2020-09-30 06:53:53
导读    前二天 我 写 了一篇, Redis高级项目实战 ( 点我直达 ), SpringBoot整合Redis附源码 ( 点我直达 ), 今天 我们来 做 一下 Redis秒杀 系统的设计。当然啦, Redis基础 知识 还不过关的 , 先去加强下自身内功 ,然后在回来看这篇, Redis基础知识 (点我直达 )。为啥写这个微信抢红包项目呢,公司0202年08月22日,公司周年庆,抢了100多红包🧧,O(∩_∩)O哈哈~ 微信抢红包 实现原理 业务流程分析 功能拆解 新建红包    在DB 、 Redis 分别 新增一条记录 抢红包( 并发 )    请求Redis , 红包剩余个数 , 大于0 才可以 拆 , 等会0 时,提示用户, 红包已抢完 拆红包( 并发 ) 用到技术   Redis 中数据类型的 String特性 的 原子递减 ( DECR key ) 和 减少指定值 ( DECRBY key decrement ) 业务 请求Redis ,当 剩余红包个数大于0 , 红包个数 原子 递减 ,随机 获取红包 计算金额 ,当最后一个红包时,最后一个红包金额=总金额-总已抢红包金额 更新数据库 查看红包记录    查询DB 即可 数据库表设计 红包流水表 CREATE TABLE `red_packet_info` ( `id` int ( 11 ) NOT NULL

docker搭建PHP开发环境

怎甘沉沦 提交于 2020-09-30 05:44:26
DNMP介绍 DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的 LNMP一键安装程序 。支持的服务丰富、功能强大、使用简单、兼容多平台。是适用于多端的一款docker开发与生产环境的PHP环境全家桶。 DNMP项目特点: 100% 开源 100% 遵循Docker标准 支持 多版本PHP 共存,可任意切换(PHP5.4、PHP5.6、PHP7.1、PHP7.2、PHP7.3) 支持绑定 任意多个域名 支持 HTTPS和HTTP/2 PHP源代码、MySQL数据、配置文件、日志文件 都可在Host中直接修改查看 内置 完整PHP扩展安装 命令 默认支持 pdo_mysql 、 mysqli 、 mbstring 、 gd 、 curl 、 opcache 等常用热门扩展,根据环境灵活配置 可一键选配常用服务: 多PHP版本:PHP5.4、PHP5.6、PHP7.1-7.3 Web服务:Nginx、Openresty 数据库:MySQL5、MySQL8、Redis、memcached、MongoDB、ElasticSearch 消息队列:RabbitMQ 辅助工具:Kibana、Logstash、phpMyAdmin、phpRedisAdmin、AdminMongo 实际项目中应用,确保 100% 可用 所有镜像源于