- 博客(165)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 Redis的数据结构-字符串
Redis的数据结构-字符串一.概念 字符串类型是redis的基础数据类型。首先,键都是字符串类型。字符串类型的值可以是字符串(简单字符串或者JSON/XML)、数值(整数和浮点数),二进制(图片,音频和视频),但是最大不能超过512MB。3.2.1.1.2 命令3.2.1.1.2.1 设置值(1)set key value [ex seconds] [.....................
2022-06-14 12:14:19 266
原创 元模型驱动架构(M-MDA)思想及应用
一、模型驱动开发(MDD)介绍:`MDD(模型驱动开发)代表了一套理论和工业化软件开发的方法框架,在软件开发全生命周期中系统的使用模型作为主要工具,目标是解决软件的两个根本危机:复杂性和变更能力 。 MDD的核心思想是让开发者的开发重心从编码转移到更高级别抽象,通过模型生成代码或其他工具来驱动自动化开发。 模型驱动开发的优势: 提高产能 :开发快、降低成本、提高质量 可维护性 :高级别模型与技术分类,技术架构的改变意味只是模型的一种新的转换 一致性 :手工编码和架构决策容易出错,MDD可以确保生成的交付
2022-05-22 12:32:06 2344
原创 Mysql innodb系列之IMasterThead工作方式
Mysql的后台线程包括Master Thead, IO Thread, Purge Thread及Page Clean Thread四种。下面我们分别讲述这几种类型的后台线程。一. Master ThreadMaster Thread是拥有最高优先级的后台线程。主要负责将缓冲池中的数据异步刷新到磁盘中,保证数据的一致性,包括脏页的刷新,合并插入缓冲,UNDO页的回收等。内部有多个循环组成........................................................
2020-04-11 23:06:22 418
原创 MySQL之语句复制与行复制
MySQL复制之语句复制与行复制这里我们来总结下MySQL复制的两种方式,基于语句的复制与基于行的复制。一.基于语句的复制 基于语句的复制,主库会记录造成数据更改的sql语句,并记录到日志中,日志文件除了记录造成数据改变的sql外,还记录了一些元数据信息,如时间戳。二.基于行的复制 基于行的复制莫斯会将发生改变的实际数据记录到日志中。三.行复制与语..................
2020-03-08 23:34:46 3327
原创 JVM刨根问底之程序计数器
祝大家每日进步,有技术问题多多交流,同时欢迎大家关注我的头条号:IT人孙会良工作之余,总结一下JVM相关知识,同时欢迎大家关注我,共同探讨技术和前沿应用。Java虚拟机在执行java程序的过程中将其管理的内存分为不同的区域,有些区域随虚拟机进程的启动而存在,有些区域则依赖于用户进程的启动和结束来建立和销毁。java虚拟机管理的内存包括如下几个区域:1.什么是程序计数器?程...............
2019-05-31 16:13:43 2874 1
原创 数据库分库分表的应用场景及解决方案
数据库分库分表的应用场景及解决方案 现实业务场景中,为了保障客户体验并满足业务的线性增长。会对数据量巨大,且业务会始终进行的产品进行分表分库策略。但是如何合理的根据业务采取争取的分表分库策略至关重要。下面以具体实例来进行分析。• 场景一:用户中心,单key业务如何进行数据库切分• 场景二:订单中心,多key业务如何进行数据库切分场景一:用户中心数据库切分架构实践|场景介..............................
2017-11-01 21:16:55 24101 7
原创 数据库分库分表的应用场景及方法分析
祝大家每日进步,有技术问题多多交流,同时欢迎大家关注我的头条号:IT人孙会良数据库分库分表的应用场景及方法分析一. 数据库经常面临的问题二.解决方法的思量三.急剧膨胀的业务及数据量的影响 以电商领域为例,订单库将订单相关的数据(订单销售,订单售后,订单任务处理等数据)都放在一个数据库中。对于订单的销售数据,性能第一,需要能够承受促销期间每分钟几万到几十万............
2017-11-01 20:50:42 4934
原创 Redis高可用方案-哨兵与集群
祝大家每日进步,有技术问题多多交流,同时欢迎大家关注我的头条号:IT人孙会良Redis高可用方案一.名词解释二.主从复制 Redis主从复制模式可以将主节点的数据同步给从节点,从而保障当主节点不可达的情况下,从节点可以作为后备顶上来,并且可以保障数据尽量不丢失(主从复制可以保障最终一致性)。第二,从节点可以扩展主节点的读能力,一旦主节点不能支持大............
2017-10-27 09:38:29 10347 1
原创 消息平台架构设计
祝大家每日进步,有技术问题多多交流,同时欢迎大家关注我的头条号:IT人孙会良消息平台架构设计一.消息平台的应用场景及难点1.解决什么业务问题:a.端到云的实时上报b.云到端的是实时推送c.端到端的聊天消息2.难点:a.APP无线环境下消息的可达性b.通用性,平台实现尽量与业务解耦二.传统解决方案-端到云的上报三.传统解决方案-云到端的推送1.云到端:通过第三方p...............
2017-10-14 18:04:32 14265
原创 Spring Cloud Ribbon
祝大家每日进步,有技术问题多多交流,同时欢迎大家关注我的头条号:IT人孙会良Spring Cloud Ribbon一.Sping Cloud Ribbon概述Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡.................................
2017-08-05 14:56:39 6080 2
原创 技术管理工作中的三个原则
技术管理工作中的三个原则 我们在工作中常常会遇到的三个原则:闭环原则、谁难受,谁推进原则、Think Bigger原则。一.闭环原则 作为一个管理者,这是非常重要的。你应该起到上传下达的作用,你要让上面的人知道你要去做什么,然后也要让你的下级知道你正在做什么。如果是做一个普通的程序员,或者是个执行者,我觉得这一点也非常重要。这.........
2017-07-29 09:53:56 7965
原创 Spring Cloud Eureka详解
Spring Cloud Eureka详解一 Eureka服务治理体系1.1 服务治理服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主要负责完成微服务架构中的服务治理功能。E...
2017-07-27 22:23:01 141548 10
原创 Spring Boot介绍
Spring Boot介绍一.什么是Spring Boot?Spring Boot是一套用于构建微服务的基础框架。其宗旨并非是要重写Spring或者是替代spring,而是希望通过设计大量的自动化配置等方式来简化Spring原有样板化的配置,使得开发者可以快速构建应用。二. Spring Boot的优势(1)通过设计大量的自动化配置等方式来简化Spring原有样板化的配置,使...
2017-07-22 00:34:21 848
原创 Springboot-启动 Spring Boot服务的方式
Springboot-启动 Spring Boot服务的方式1.启动springboot服务 java–jar jar包名称.jar2 使用profile指定环境的配置文件启动服务java –jar jar包名称.jar –-spring.profiles.active={profile}首先要有profile指定环境的配置文件,服务启动时Spring Boot 会先...........................
2017-07-21 11:35:02 3088
原创 Spring Cloud-简介
Spring Cloud-简介一.什么是Spring cloud?Spring Cloud是一个基于SpringBoot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。二. Spring Cloud包含的子项目Spring Cloud Config:配置......
2017-07-21 00:21:52 3056
原创 Redis-AOF持久化
Redis持久化-AOF一. AOF持久化原理AOF(append only file)持久化是以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF主要作用是解决了数据持久化的实时性,目前已经是redis持久化的主流方式。二. 开启AOF持久化(1)开启AOF持久化,需要设置appendonly参数的值为yes,默认不开启。(2)aof............
2017-07-20 00:28:19 2370
原创 Redis-RDB持久化
Redis-RDB持久化一. RDB持久化的原理RDB持久化是把当前进程数据生成快照保存到硬盘中的过程。二. RDB持久化的触发机制2.1 手动触发RDB手动触发RDB的方式有两种,分别是save命令和bgsave命令2.1.1 save命令触发RDB Save命令将阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境......
2017-07-18 19:59:34 2038
原创 Redis-Shell
Redis Shell一. redis-cli1.1 查看redis-cli命令帮助 redis-cli help 查看redis-cli命令帮助[devuser@iz2ze2ehfvske0t6zflgupz ~]$redis-cli helpredis-cli 3.2.4To get help about Redis commands type:"help
2017-07-15 19:05:39 6126 1
原创 Redis-客户端管理
Redis-客户端管理一.客户端API1.1 查看所有客户端信息 client listClient list命令可以列出所有与Redis服务端相连的客户端信息。例如:10.3.34.101:6378> client listid=10521 addr=10.3.34.101:39696 fd=5 name=age=4017 idle=41 flags=N db=0 sub...
2017-07-15 18:57:07 4553 1
原创 Redis异常分析-输出缓冲区过大
Redis异常分析-输出缓冲区过大一.输出缓冲区概念Redis为每个客户端分配了输出缓冲区,它的作用是保存命令的执行结果返回给客户端,为Redis和客户端交互返回结果提供缓冲。与输入缓冲区的区别是:输入缓冲区不能指定容量,而输出缓冲区可以通过参数client-output-buffer-limit来指定容量。二.输出缓冲区过大的危害输出缓冲区不受maxmemory的控制,假设一个R...
2017-07-14 11:28:26 4463 2
原创 Redis异常分析-输入缓冲区过大
Redis异常分析-输入缓冲区过大一.输入缓冲区概念Redis为每个客户端分配了输入缓冲去,它的作用是将客户端发送的命令临时保存,同时Redis会到输入缓冲区拉取命令并执行,输入缓冲区为客户端发送命令道Redis执行命令提供了缓冲功能。qbuf代表了输入缓冲区的大小,qbuf-free代表输入缓冲区的剩余容量。输入缓冲区会根据输入内容的大小动态调整,每个客户端的输入缓冲区大小不能超过1...
2017-07-13 20:55:41 3388
原创 Redis-Java客户端Jedis
Redis-Java客户端Jedis 一.Jedis的下载方式 Maven管理下,在pom文件中引入如下依赖即可:dependency> groupId>redis.clientsgroupId> artifactId>jedisartifactId> 2.9 depen
2017-07-13 19:37:00 1636
原创 Redis-客户端通讯协议
Redis-客户端通讯协议一.概述1.客户端与服务端的通讯协议是建立在TCP协议之上构建的2.Redis指定了RESP(Redis SerializationProtocol,Redis序列化协议)实现客户端与服务端的正常交互,这种协议简单高效,即容易被机器解析,又容易被人类识别。二.发送命令格式RESP规定一条命令的格式如下:其中CRLF代表\r\n* CRLF.........
2017-07-13 10:07:38 3329
原创 Redis-GEO
Redis-GEO一. Redis的GEO特性Redis3.2版本提供了GEO功能,支持存储地理位置信息用来实现诸如摇一摇,附近位置这类依赖于地理位置信息的功能。二. 命令2.1 增加地理位置信息命令:geoadd key longitude latitude member[longitude latitude member…]例如:geoadd cities:locati............
2017-07-12 15:44:36 4311
原创 Redis-发布订阅
Redis-发布订阅一.Redis的发布订阅机制Redis提供了基于“发布订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel)发布消息,订阅该频道的每个客户都可以收到该消息二.命令2.1 发布消息命令; publish channel messagepublishchannel1 message22.2...
2017-07-11 20:55:24 717
原创 Redis-HyperLogLog
HyperLogLog一.什么是HyperLogLogHyperLogLog并不是一种新的数据结构(实际类型为字符串类型),而是一种基数算法,通过HyperLogLog可以利用极小的内存空间完成独立总数的统计,数据集可以是ip、Email、ID等。二. 命令2.1 添加pfadd key element[element…]Pfadd命令用于向HyperLogLog添加元素,如果...
2017-07-11 17:01:52 1134
原创 Redis-Bitmaps应用
Redis-Bitmaps应用一.数据结构模型Redis提供的Bitmaps这个“数据结构”可以实现对位的操作。Bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作。可以把Bitmaps想象成一个以位为单位数组,数组中的每个单元只能存0或者1,数组的下标在bitmaps中叫做偏移量。单个bitmaps的最大长度是512MB,即2^32个比特位。二....
2017-07-11 15:49:24 4739 1
原创 在Redis中使用Lua
在Redis中使用Lua一.Lua是什么?Lua是一门脚本语言,它是由C语言实现的。其设计目标是做为嵌入式程序移植到其他应用程序。Redis将Lua做为脚本语言可以帮助开发者定制自己的Redis命令。二. 数据类型Lua支持strings(字符串),numbers(数值),tables(表格),booleans(布尔)三. 在Redis中使用Lua3.1 eval3.2...
2017-07-10 21:46:57 3563
原创 Redis-事务控制
Redis-事务控制一.事务1.1 事务的概念事务表示一组动作,要么全部执行,要么全部不执行。Redis提供了简单的事务控制。将一组需要一起执行的命令放到multi和exec两个命令之间。multi代表事务的开始,exec代表事务的结束,它们之间的命令是原子顺序执行的。1.2 redis事务相关命令1.2.1 事务的创建(multi)、执行(exec)与回滚(disc...
2017-07-10 20:36:17 1294
原创 Redis-pipeline
Redis-Pipeline一. 概念Redis客户端和服务端往往部署在不同的机器上,客户端命令的执行分为发送命令,命令排队,执行命令,返回结果四个步骤。其中发送命令和返回结果的时间称为Round Trip Time(RTT 往返时间)。当客户端有大量的命令时,会有大量的往返时间,如果有N条命令要执行,就会有N个往返时间。因此业界有种说法是Redis的性能瓶颈往往是网络。Pipel...
2017-07-10 14:27:52 1122
原创 Redis-数据库管理
Redis-数据库管理一.数据库管理Redis支持在一个实例下创建多个数据库,数据库中的键彼此是隔离的,默认配置是16个库。Redis-cli连接redis-server时默认连接的是0号数据库。由于Redis是单线程的,同一个实例的多数据库仍然使用同一个CPU,彼此之间仍然会受影响。任何一个库的慢查询都会影响其他库,对开发和运维的调试带来很大的不遍历。多读数据库的需求可以转换为部署多...............
2017-07-04 20:17:51 1126
原创 Redis API-全局命令
Redis API-全局命令一. 查看所有键Keys * keys命令会遍历所有键,时间复杂度是O(n),当Redis保存大量键时,环境上禁止使用。二. 键总数dbsizedbsize命令不会遍历所有键,而是直接获取Redis内置的键总数变量,所以dbsize命令的时间复杂度是O(1).三. 检查指定的键是否存在exists key检查指定的键是否存在,如存在返...
2017-07-04 19:06:12 961
原创 Redis数据结构和内部编码--集合(Set)
Redis数据结构和内部编码--集合(Set)一.概念集合也是用来存储多个字符串元素,但和列表示有区别的,集合中的元素是无序且无重复的,不能用下标来获取元素。在Redis中,一个集合最多可以存储2^32个元素,除了支持对集合的增删改查外,还支持对多个集合取交集、并集、差集。二. 命令2.1 添加元素命令:sadd key value[value2…],返回添加成功的元素个...
2017-07-03 00:20:11 1704
原创 Redis数据结构和内部编码--哈希(hash)
一.概念在Redis中,也提供了和其他语言一样键值对结构的hash类型,Redis的hash类型的键值本身又是一个键值对结构.如:keyvalueuser:1keyvaluecode01nameshluser:2key
2017-07-01 12:43:49 2641
原创 Redis数据结构和内部编码--字符串
数据结构和内部编码--字符串一.概念 字符串类型是redis的基础数据类型。首先,键都是字符串类型。字符串类型的值可以是字符串(简单字符串或者JSON/XML)、数值(整数和浮点数),二进制(图片,音频和视频),但是最大不能超过512MB。二. 命令2.1 设置值(1)set key value [ex seconds] [pxmillisecons] [nx|......
2017-06-30 01:36:19 3010
原创 mysql可扩展性
可扩展性。 即通过增加资源提升整个系统吞吐量的能力一般会有如下的角度影响负载:数据量用户量 更多的用户,意味着更多的数据,更复杂的查询,更多的事务用户活跃度 容易造成热点相关数据集的大小 即关联数据,比如好友可扩展性的数学表现:最简单的是线性的,资源翻倍,吞吐量翻倍但是由于有些工作是线性的,无法通过并发来提升,这样曲线就会趋于平缓再引入扩展带来的内部节点或者是线程间.........
2017-06-24 11:57:21 1713
原创 Redis单线程架构
Redis单线程架构1 单线程模型Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本...
2017-06-23 23:19:44 15958 5
原创 Redis的配置、启动、操作和关闭
Redis的配置、启动、操作和关闭一.启动Redis 1.默认配置启动 执行redis-server命令,按照默认的redis.conf配置文件中的配置启动Redis,如下: 因为默认配置无法自定义配置。所以该方式不会再生产环境中使用 2.运行配置启动 在命令redis-server后加上要修改的配置名和值(可以设置多对),没有设置的.........
2017-06-23 09:16:39 103188
原创 Redis的应用场景
一.Redis的应用场景1.1 Redis可以做什么?(1)缓存(2)计数器应用(3)消息队列系统(4)排行榜系统(5)社交网络1.2 Redis不适合做什么?(1)大规模数据内存相对其它存储介质来讲成本还是较高,存储大规模数据来说还是较贵,如果每天有几亿的用户行为数据而使用Redis来存储,基本是个无底洞,经济成本相当高...
2017-06-22 19:43:24 420
原创 Redis系列-复制
Redis系列-复制一.什么是复制?Redis复制是不同Redis实例之间的数据同步,其中我们将被复制的Redis实例称之为主服务器,复制数据的Redis实例称之为从服务器。复制的方式通常为主服务器将数据发送到从服务器,从服务器接收到数据,将数据保存在当前实例中,最终的目标是保证主服务器与从服务器间的数据一致及同步。二.复制的实现1.同步1.1 SYNC从服务器通过向...
2017-06-02 16:57:48 1271
同一个tomcat下部署的多个war包下的dubbo服务无法访问
2017-02-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人