后端开发
文章平均质量分 92
后端开发
小霸戈
资深码农,记录学习,分享个人经验
展开
-
学习 DDD 之消化知识
接触到DDD到现在已经有8个月份了,目前所维护的项目也是基于DDD的思想开发的,从一开始的无从下手,到现在游刃有余,学到不少东西,但是都是一些关键字和零散的知识,同时我也感受到了是因为我对项目越来越熟悉,熟能生巧导致我现在在做需求的时候根本不用过多的去思考,就能很好的完成业务需求,我慢慢的意识到,学习DDD是非常有必要的。在传统的开发模式中,产品经理在跟业务专家沟通业务需求后,对其进行抽象并将结果通过口头或者项目管理工具传达到开发人员,开发人员根据产品经理传递的业务需求机械式地进行功能开发,这样的模式使开原创 2021-11-28 11:33:53 · 237 阅读 · 0 评论 -
开放平台SDK设计思路
大家好,我是霸戈!上次写完 “淘宝” 开放平台接口设计思路后,有不少粉丝就提到什么时候会出下一篇,所以今天打算写一篇开放平台SDK设计的一些思路,同时我也会做一些实践,一步步把我的设计思路进行落地。在写这篇文章之前,我个人因为工作的原因使用过淘宝、京东开放平台的一些SDk,也学到不少设计思路,这次准备将我的思路落地成可以使用的SDK,大概的设计会分为三个模块,分别为:数据传输模块:主要用于传输请求数据,本文使用http协议传输数据序列化模块:用户序列化和反序列化数据,SDK是给客户使用应该尽可能的去原创 2021-10-10 15:38:37 · 591 阅读 · 0 评论 -
ElasticSearch 面试 4 连问,你顶得住么?
来源:https://github.com/doocs/advanced-java面试题ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?底层的 Lucene 介绍一下呗?倒排索引了解吗?面试官心理分析问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es 在干什么,那你真的是…对 es 基本就是个黑盒,你还能干啥?你唯一能干的就是用 es 的 api 读写数据了。要是出点什么.转载 2021-02-18 10:16:30 · 459 阅读 · 0 评论 -
企业级微服务架构统一安全认证设计与实践!
来源:https://juejin.cn/post/6906149001520037902作者:mars名词定义Third-party application:第三方应用程序,本文中又称"客户端"(client)。HTTP service:HTTP服务提供商,本文中简称"服务提供商"。Resource Owner:资源所有者,本文中又称"用户"(user),即登录用户。User Agent:用户代理,本文中就是指浏览器。Authorization server:认证服务器,即服务提供商.转载 2021-02-05 18:39:45 · 106 阅读 · 0 评论 -
这 4 种高可用 RocketMQ 集群搭建方案,推荐最后一种。。。
背景笔者所在的业务线,最初化分为三个服务,由于业务初期业务复杂度相对简单,三个业务服务都能很好的独立完成业务功能。随着产品迭代,业务功能越来越多后慢慢也要面对高并发、业务解耦、分布式事务等问题,所以经过团队内部讨论,引入 RocketMQ 消息中间件来更好的处理业务。由于公司内部业务线部署相互独立,我们业务线对引入 RocketMQ 的需求也比较急切,所以打算自己搭建一套高可用的 RocketMQ 集群,同时对于自建的 RocketMQ 集群需要如下特性:高可用高并发可伸缩海量消息命名服原创 2020-11-29 09:22:49 · 1221 阅读 · 0 评论 -
面试官:Spring @Autowired 注解自动注入流程是怎么样?
面试中碰到面试官问:”Spring 注解是如果工作的?“,当前我一惊,完了这不触及到我的知识误区了吗?,还好我机智,灵机一动回了句:Spring 注解的工作流程倒还没有看到,但是我知道@Autowired注解的工作流程,后面不用说了一顿巴拉,面试官都连连点头。面试中要活用转移话题,要避免回答 ”不知道“,要引导面试官掉入你擅长的技术,然后才有机会教他作人。@Autowired 相关的类@Autowired 注解的主要功能就是完成自动注入,使用也非常简单(Spring都安排好了),但是要想知道 @Aut原创 2020-11-22 21:20:35 · 739 阅读 · 0 评论 -
关于 TCP/IP,必知必会的十个问题
来源:https://juejin.im/post/6844903490595061767标题:tcp-ip作者:Ruheng本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。TCP/IP十个问题一、TCP/IP模型TCP/IP协议模型(Transmission Control Protocol/InternetProtocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。基于TCP/IP的参考模型将协议分成四.转载 2020-10-31 09:01:58 · 141 阅读 · 1 评论 -
AQS 自定义同步锁,挺难的!
AQS是AbstractQueuedSynchronizer的简称。AbstractQueuedSynchronizer 同步状态AbstractQueuedSynchronizer 内部有一个state属性,用于指示同步的状态:private volatile int state;state的字段是个int型的,它的值在AbstractQueuedSynchronizer中是没有具体的定义的,只有子类继承AbstractQueuedSynchronizer那么state才有意义,如在Reentr原创 2020-10-24 15:57:44 · 187 阅读 · 0 评论 -
拜托,不要再问我线程池啦!
Java提供了几种便捷的方法创建线程池,通过这些内置的api就能够很轻松的创建线程池。在java.util.concurrent包中的Executors类,其中的静态方法就是用来创建线程池的:newFixedThreadPool():创建一个固定线程数量的线程池,而且线程池中的任务全部执行完成后,空闲的线程也不会被关闭。newSingleThreadExecutor():创建一个只有一个线程的线程池,空闲时也不会被关闭。newCachedThreadPool():创建一个可缓存的线程池,线程的数量为原创 2020-10-19 17:23:01 · 192 阅读 · 0 评论 -
这次一定让你记住 TCP 三次握手、四手挥手!
TCP协议全称为:Transmission Control Protocol,是一种面向链接、保证数据传输安全、可靠的数据传输协议。为了确保数据的可靠传输,不仅需要对发出的每个字节进行编号确认,还需要验证每一个数据包的有效性。每个TCP数据包是封闭在IP包中的,每个一IP包的后面紧跟着的是TCP头,TCP报文格式如下:源端口和目的端口字段TCP源端口(Source Port):源计算机上的应用程序的端口号,占 16 位。TCP目的端口(Destination Port):目标计算机的应用程序端口号原创 2020-10-12 20:58:01 · 178 阅读 · 0 评论 -
JAVA线上故障排查指南!
作者:fredalxin地址:https://fredal.xin/java-error-check线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题.转载 2020-09-19 10:15:33 · 389 阅读 · 0 评论 -
面试官:RocketMQ 消息会丢失吗?如何解决消息丢失!!
既然在项目中使用了MQ,那么就不可避免的需要考虑消息丢失问题。在一些涉及到了金钱交易的场景下,消息丢失还是很致命的。那么在RocketMQ中存在哪几种消息丢失的场景呢?先来一张最简单的消费流程图:上图中大致包含了这么几种场景: 生产者产生消息发送给RocketMQ RocketMQ接收到了消息之后,必然需要存到磁盘中,否则断电或宕机之后会造成数据的丢失 消费者从RocketMQ中获取消息消费,消费成功之后,整个流程结束 这三种场景都可能会产生消息的丢失,如下图所示:转载 2020-09-17 10:08:25 · 1999 阅读 · 0 评论 -
超全的 Elasticsearch 性能调优技巧,值的收藏!
原文:http://elasticsearch.cn/article/6202因为总是看到很多同学在说elasticsearch性能不够好,集群不够稳定,询问关于elasticsearch的调优,但是每次都是一个个点的单独讲,很多时候都是case by case的解答,今天简单梳理下日常的elasticsearch使用调优,以下仅为自己日常经验之谈,如有疏漏,还请大家帮忙指正。一、配置文件调优elasticsearch.yml内存锁定bootstrap.memory_lock:true 允许 .转载 2020-09-03 10:25:29 · 897 阅读 · 1 评论 -
必须了解的mysql三大日志-binlog、redo log和undo log
日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息。 mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志( binlog )和事务日志(包括redo log 和 undo log ),本文接下来会详细介绍这三种日志。binlogbinlog 用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。 binlog 是 mysql的逻辑日志,并且由 Server 层进行记录,使用任何存转载 2020-08-31 10:08:31 · 379 阅读 · 0 评论 -
详解Docker中Image、Container与 Volume 的迁移
已经部署的容器化服务,也不是不需要维护的。而且,由于生产环境往往有这样那样的严格要求,往往需要些非常规操作。Image(镜像)、Container(容器)和Volume(数据卷)的迁移,就是一类有用的非常规操作。以下镜像,均以最简单的Alpine为例。Image镜像的迁移,适用于离线环境。一般离线环境,都会自建Docker Registry。无论官方的,还是最近流行的Harbor,都是不错的选择。但是,这个世界上就是有些环境,或者说一些环境在某些时期,没有外网,也没有内部的Registry。这个时候转载 2020-08-30 09:15:18 · 180 阅读 · 0 评论 -
模拟一次超过 5 万的并发用户,你会吗?
作者:blazemeter来源:t.cn/ES7KBkW步骤1 : 编写你的脚本步骤2 : 使用JMeter进行本地测试步骤3 : BlazeMeter沙箱测试步骤4 : 使用1个控制台和1个引擎来设置每个引擎用户的数量步骤5 : 安装并测试集群步骤6 : 使用 Master / Slave 特性来达成你的最大CC目标本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情.你可以在本文的结尾部分看到讨论的记录.快速的步骤概要编写你的脚本使用JMeter进行本地测转载 2020-08-28 09:36:38 · 172 阅读 · 0 评论 -
记一次线上商城系统 Tomcat、JVM 高并发的优化
来源:https://urlify.cn/jyYny2对于线上系统调优,它本身是个技术活,不仅需要很强的技术实战能力,很强的问题定位,问题识别,问题排查能力,还需要很丰富的调优能力。本篇文章从实战角度,从问题识别,问题定位,问题分析,提出解决方案,实施解决方案,监控调优后的解决方案和调优后的观察等角度来与大家一起交流分享本次线上高并发调优整个闭环过程。一、项目简要情况概述该项目为基于SSM架构的商城类单体架构项目,其中有一个秒杀重磅模块,如下为当前线上环境的简要架构部署图,大致描述一下:(1.转载 2020-08-23 12:30:58 · 176 阅读 · 0 评论 -
使用数据库、Redis、ZK分别实现分布式锁!
来源:https://www.cnblogs.com/barrywxx/p/11644803.html作者:BarryW分布式锁三种实现方式:基于数据库实现分布式锁;基于缓存(Redis等)实现分布式锁;基于Zookeeper实现分布式锁;基于数据库实现分布式锁悲观锁利用select … where … for update 排他锁注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大.转载 2020-08-18 09:46:34 · 159 阅读 · 0 评论 -
打开容器技术的大门,更通俗易懂的 Docker 教程!
作者: jartto出处: http://jartto.wang/2020/07/04/learn-docker/富 Web 时代,应用变得越来越强大,与此同时也越来越复杂。集群部署、隔离环境、灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁。本文我们就来探索一下 Docker 的神秘世界,从零到一掌握 Docker 的基本原理与实践操作。别再守着前端那一亩三分地,是时候该开疆扩土了。讲个故事为了更好的理解 Docker 是什么,我们先来讲个故事:我需要盖一个房子,于是我搬石头、砍.转载 2020-08-11 11:11:45 · 205 阅读 · 0 评论 -
SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录
来源:http://dwz.date/bRkG 作者:Sans_一.说明Shiro是一个安全框架,项目中主要用它做认证,授权,加密,以及用户的会话管理,虽然Shiro没有SpringSecurity功能更丰富,但是它轻量,简单,在项目中通常业务需求Shiro也都能胜任.二.项目环境MyBatis-Plus版本: 3.1.0SpringBoot版本:2.1.5JDK版本:1.8Shiro版本:1.4Shiro-redis插件版本:3.1.0数据表(SQL文件在项.转载 2020-08-07 08:40:04 · 866 阅读 · 0 评论 -
8场5胜,微服务 VS 单体架构
译者:王延飞原文链接:http://dwz.date/bPpg越来越多的组织开始放弃单体应用,逐步转向微服务的架构模式–将业务流程分为多个独立的服务。例如,在一个机票预订中,就可能涉及许多个单独的过程:在航空公司预订机票,付款,并在机票成功预订后向客户发送确认信息。微服务架构,就是将各个流程按照业务拆分为独立的服务。在上面的示例中,机票预订服务可以被拆分为机票预订,付款和确认,拆分后的微服务可以通过接口相互通信。那么,微服务与单体应用,究竟有什么不同?对比1:网络延迟当涉及微服务时,有一个.转载 2020-08-05 08:30:13 · 200 阅读 · 0 评论 -
SQL判断是否“存在“,还在用 count 操作?试试这条 SQL 语句,性能杠杠的!
来源 | https://urlify.cn/JjYBJn根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要select count(*)呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count.目前多数人的写法多次 review 代码时,发现如现现象:业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下SQL写法:SELECT count(*) FROM tabl转载 2020-07-26 10:29:08 · 234 阅读 · 0 评论 -
如何让你的Nginx 提升10倍性能?
来源:www.zcfy.cc/article/10-tips-for-10x-application-performance-nginx-22.html原文:https://www.nginx.com/blog/10-tips-for-10x-application-performance/提升Web应用的性能从未像今天这样刻不容缓。在线经济活动的比例日益提高,就连发展中国家和地区的经济活动都已经有5%以上在线进行了(相关数据请参考本文后面的资源)。在这个超级链接、随时在线的现代世界,用户的期望也.转载 2020-07-23 21:36:41 · 218 阅读 · 0 评论 -
SaaS 系统架构,租户数据隔离模式与租户信息解析方案!
这段时候在准备从零开始做一套SaaS系统,之前的经验都是开发单数据库系统并没有接触过SaaS系统,所以接到这个任务的时候也有也些头疼,不过办法部比困难多,难得的机会。在网上找了很多关于SaaS的资料,看完后使我受益匪浅,写文章之前也一直在关注SaaS系统的开发,通过几天的探索也有一些方向,初步用到了以下技术栈 & 工具:SpringBootSpring CloudSpring Security(鉴权)Mybatis Plus(多租户sql增强)阿里云 Rds(动态创建租户数据库)多原创 2020-07-08 10:44:46 · 1450 阅读 · 0 评论 -
RocketMQ生产者、消费者、部署配置最佳实践!
1 生产者1.1 发送消息注意事项1 Tags的使用一个应用尽可能用一个Topic,而消息子类型则可以用tags来标识。tags可以由应用自由设置,只有生产者在发送消息设置了tags,消费方在订阅消息时才可以利用tags通过broker做消息过滤:message.setTags(“TagA”)。2 Keys的使用每个消息在业务层面的唯一标识码要设置到keys字段,方便将来定位消息丢失问题。服务器会为每个消息创建索引(哈希索引),应用可以通过topic、key来查询这条消息内容,以及消息被谁消转载 2020-05-16 08:36:19 · 2976 阅读 · 0 评论 -
RPC 基本原理以及如何用Netty来实现RPC
来源:https://www.jianshu.com/p/8876c9f3cd7f作者:清幽之地前言在微服务大行其道的今天,分布式系统越来越重要,实现服务化首先就要考虑服务之间的通信问题。这里面涉及序列化、反序列化、寻址、连接等等问题。。不过,有了RPC框架,我们就无需苦恼。一、什么是RPC?RPC(Remote Procedure Call)—远程过程调用,是一个计算机通信协议。...转载 2020-04-30 09:13:43 · 197 阅读 · 0 评论 -
强大的 Spring Security 是如何在 Servlet 应用中执行的?
Spring Security 是一个强大的认证和授权框架,它的使用方式也非常简单,但是要想真正理解它就需要花一时间来学习了,最近在学习 Spring Security 时有一些新的理解,特意记录下来防止知识忘记的太快,毕竟好记性不如烂笔关,也给即将准备学习 Spring Security 的同志做一个参考。由于我在学习和使用是基于 Servlet Applications 的,所以文中的大部分...原创 2020-04-26 20:16:37 · 237 阅读 · 0 评论 -
MybatisPlus 多租户架构(SaaS)实现
1. 引言读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP然而,...转载 2020-04-26 09:04:11 · 2391 阅读 · 0 评论 -
利用 ShardingSphere-JDBC 实现分库分表实践
来源:https://www.cnblogs.com/wingsless/p/11406481.html作者:wingsless利用ShardingSphere-JDBC实现分库分表1. ShardingSphere概述1.1 概述业务发展到一定程度,分库分表是一种必然的要求,分库可以实现资源隔离,分表则可以降低单表数据量,提高访问效率。分库分表的技术方案,很久以来都有两种理念:...转载 2020-04-22 08:16:05 · 714 阅读 · 0 评论 -
深入探秘 Netty、Kafka 中的零拷贝技术!
前言从字面意思理解就是数据不需要来回的拷贝,大大提升了系统的性能;这个词我们也经常在javanio,netty,kafka,RocketMQ等框架中听到,经常作为其提升性能的一大亮点;下面从I/O的几个概念开始,进而在分析零拷贝。I/O概念1.缓冲区缓冲区是所有I/O的基础,I/O讲的无非就是把数据移进或移出缓冲区;进程执行I/O操作,就是向操作系统发出请求,让它要么把缓冲区的数据排干(...转载 2020-04-20 08:11:13 · 177 阅读 · 0 评论 -
如何使用 Nginx 优雅的限流
来源:https://www.cnblogs.com/biglittleant/p/8979915.html作者:biglittleant限流算法令牌桶算法算法思想是:令牌以固定速率产生,并缓存到令牌桶中;令牌桶放满时,多余的令牌被丢弃;请求要消耗等比例的令牌才能被处理;令牌不够时,请求被缓存。漏桶算法算法思想是:水(请求)从上方倒入水桶,从水桶下方流出(被处理...转载 2020-04-14 12:20:23 · 197 阅读 · 1 评论 -
Redisson 实现分布式锁原理解析
来源:https://www.cnblogs.com/qdhxhz/p/11046905.html作者:雨点的名字Redisson实现分布式锁有关Redisson作为实现分布式锁,总的分3大模块来讲。1、Redisson实现分布式锁原理2、Redisson实现分布式锁的源码解析3、Redisson实现分布式锁的项目代码(可以用于实际项目中)本文只介绍Redisson如何实现...转载 2020-04-13 15:05:19 · 584 阅读 · 0 评论 -
Prometheus + Granafa 构建高大上的MySQL监控平台
来源:https://blog.51cto.com/xiaoluoge/2476375作者:小罗ge11概述对于MySQL的监控平台,相信大家实现起来有很多了:基于天兔的监控,还有基于zabbix相关的二次开发。相信很多同行都应该已经开始玩起来了。我这边的选型是Prometheus + Granafa的实现方式。简而言之就是我现在的生产环境使用的是prometheus,还有就是grana...转载 2020-04-11 10:05:24 · 472 阅读 · 0 评论 -
4 种分布式session解决方案
作者:断橋殘雪链接:https://blog.csdn.net/qq_35620501/article/details/95047642cookie和session的区别和联系cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储的数据量小session是服务器用来存储部分数据信息,保存在服务器,用户不容易获取,安全性高,储存的数据量相对大...转载 2020-04-08 09:07:27 · 131 阅读 · 0 评论 -
30分钟理解GraphQL核心概念
来源:https://segmentfault.com/a/1190000014131950作者:littleLyon写在前面在上一篇文章RPC vs REST vsGraphQL中,对于这三者的优缺点进行了比较宏观的对比,而且我们也会发现,一般比较简单的项目其实并不需要GraphQL,但是我们仍然需要对新的技术有一定的了解和掌握,在新技术普及时才不会措手不及。这篇文章主要介绍一些我...转载 2020-04-05 09:59:59 · 231 阅读 · 0 评论 -
分享下被偷走的那些年,我在做外包的心得体会
前言先说一说做外包的原因和经历,我是在17年开始接触外包,当前也没有花太多的时间去做外包项目,大部分精力还是主要的工作上,下班/周末的时候花一些时间来做那些项目。17 年和朋友一起注册了一家公司,然后开始在八戒上挂服务。有时候觉得:只有你进入某个你没有接触的领域时,你才知道竞争有多激烈,这里不得不说下八戒的一些坑:单子质量比较差,有很多假单服务五花八门,各种变相收费手续费也不少(现在改...原创 2020-04-03 10:54:10 · 2316 阅读 · 1 评论 -
Docker容器日志管理最佳实践
本文所有内容基于:Docker-CEServer Version: 18.09.6Storage Driver: overlay2Kernel Version: 3.10.0-862.el7.x86_64Operating System: CentOS Linux 7 (Core)Docker 日志分为两类:Docker 引擎日志(也就是 dockerd 运行时的日志),容器...转载 2020-03-31 09:48:21 · 190 阅读 · 0 评论 -
详解:如何设计出健壮的秒杀系统?
前言:秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。那么秒杀系统的后台是如何实现的呢? 我们如何设计一个秒杀系统呢? 对于秒杀系统应该考虑哪些问题? 如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:一:秒杀应该考虑哪些问题1.1: 超卖问题分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价...转载 2020-03-31 09:47:40 · 131 阅读 · 0 评论 -
SaaS(软件即服务) 的架构设计,是什么样子的
来源:https://juejin.im/post/5cf45fc151882502f9490639作者:谭朝红1、介绍从计算机诞生开始,就伴随着计算机应用程序的演变。简短的回顾历史,我们可以清楚的看到应用程序发生的巨大变化。上世纪70年代中期,随着个人PC机的爆炸式增长以及程序员的崛起,让计算机的计算能力得到了大跨越的提升,个人PC机上可以运行非常复杂的应用程序。进入上世纪80年代,...转载 2020-03-29 10:40:58 · 567 阅读 · 0 评论 -
一文带你深入了解 Redis 内存模型
作者:编程迷思链接:https://www.cnblogs.com/kismetv/p/8654978.html前言Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等...转载 2020-03-27 10:42:07 · 239 阅读 · 0 评论