Redis

这可能是最中肯的Redis规范了

雨燕双飞 提交于 2020-09-28 00:00:11
来自:小姐姐味道 redis功能强大,数据类型丰富,再快的系统,也经不住疯狂的滥用。通过禁用部分高风险功能,并挂上开发的枷锁,业务更能够以简洁、通用的思想去考虑问题,而不是绑定在某种实现上。 Redis 根据不同的用途,会有不同的持久化策略和逐出策略,所以,在使用和申请 Redis 集群前,请明确是用来做缓存还是存储。redis 的集群有主从和 cluster 两种模式,各有优缺点。以下规范不区分集群模式,我们分别从使用场景和操作限制两方面说明。 使用规范 冷热数据区分 虽然 Redis支持持久化,但将所有数据存储在 Redis 中,成本非常昂贵。建议将热数据 (如 QPS超过 5k) 的数据加载到 Redis 中。低频数据可存储在 Mysql、 ElasticSearch中。 业务数据分离 不要将不相关的数据业务都放到一个 Redis中。一方面避免业务相互影响,另一方面避免单实例膨胀,并能在故障时降低影响面,快速恢复。 消息大小限制 由于 Redis 是单线程服务,消息过大会阻塞并拖慢其他操作。保持消息内容在 1KB 以下是个好的习惯。严禁超过 50KB 的单条记录。消息过大还会引起网络带宽的高占用,持久化到磁盘时的 IO 问题。 连接数限制 连接的频繁创建和销毁,会浪费大量的系统资源,极限情况会造成宿主机当机。请确保使用了正确的 Redis 客户端连接池配置。 缓存 Key

10种AWS成本优化最佳实践

岁酱吖の 提交于 2020-09-27 23:54:44
对于现有的成本优化的 问题,最常见的“解决方案”是调整大小,计划和购买预留实例以实现可预测的工作负载。 这三个“解决方案”可能是大多数AWS用户熟悉的AWS成本优化最佳实践,但不一定是“最佳”实践。有时,他们无法节省声称的成本的一小部分,而许多其他通常被忽视的AWS成本优化最佳实践可以节省更多。 10种AWS成本优化最佳实践 1.调整EC2实例的大小 正如我们已经提到的调整大小,调度和保留实例一样,让我们从这三个AWS成本优化最佳实践开始。调整大小的目的是使实例大小与其工作负载相匹配。不幸的是,由于实例的容量每增加一倍,容量就不能那样工作。 因此,只有在某些实例的峰值利用率不超过〜45%的情况下,调整大小才是值得的最佳实践。仍然值得分析利用率指标,以寻找机会将工作负载转移到更适合其需求的不同系列(“通用”之外)。 解决方案: 在某些实例的峰值利用率(最好是结合CPU和内存一起)不超过〜45%的情况下,调整大小才是值得的最佳实践 2.安排开/关时间 值得安排非生产实例(例如用于开发和测试的实例)的开/关时间,因为如果您应用“按时”计划(从上午8.00到8.00),您将节省运行这些实例的65%的时间下午星期一到星期五。但是,可以节省更多的钱,尤其是如果开发团队以不规则的方式或不规则的时间工作。 您可以通过分析利用率指标来确定更经常使用的实例,从而应用更为激进的调度

redis里通过命名空间存储缓存,根据结构生成树型

大兔子大兔子 提交于 2020-09-27 13:57:34
一般为了方便管理 redis 缓存,我们通过 : 来分隔不同的 key 来进行存储缓存,这样方便查看。 例如: game:upload_role:1000 game:member_info:2000 game:member_info:state_info:3000 上面的这种结构在 Redis Desktop Manager 中就会显示如下: 我们可以通过 keys 命令来获取 redis 里的所有 key。但这些 key 是没有层次的,如何生成? 只能通过 : 分隔符来处理各 key 的上下层关系。 代码如下: function relationCache($keys, &$index, &$index_tree) { $result = []; if ($keys) { foreach ($keys as $key) { $arr = explode(':', $key); $len = count($arr); for ($ix = 0; $ix < $len; $ix++) { $cur_key = implode(':', array_slice($arr, 0, $ix + 1)); if (!isset($index_tree[$cur_key])) { $index_tree[$cur_key] = $index++; $pid = 0; if ($ix >= 1)

2020年5月中旬面试总结,至今最全的Java程序员高频面试知识点解析笔记

旧时模样 提交于 2020-09-27 13:56:30
就目前大环境来看,跳槽成功的难度比往年高很多。总结一下面试的感受:无论一面还是二面,都很考验Java程序员的技术功底!! 最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份“Java程序员高频面试解析及知识点体系笔记.pdf(实际上比预期多花了不少精力),包含 集合,JVM,并发编程、Spring,MyBatis,微服务,Redis,Dubbo,设计模式,数据结构,分布式等!,由于篇幅有限,为了方便大家观看,这里以图片的形式给大家展示每部分的目录和答案截图,完整学习文档在文末有免费领取方式! 这份Java面试解析和知识点体系文档内容包括: Java 篇主要包含 Java集合 Hashmap、JVM、GC、锁、多线程、并发、代理、NIO 等。 MySQL数据库主要包含索引、B+ 树、SQL 优化相关。 分布式存储篇主要包含 Redis 架构相关、MongDB 分布式中间件主要包含 Kafka,RabbitMQ相关面试题 微服务Spring Boot、Spring Cloud、Dubbo 篇。 系统架构设计篇,根据几个开放性题目来设计系统。 框架篇主要包含 Spring MyBatis、SpringMVC,netty与RPC 设计模式篇 数据结构与算法篇 相信它会给大家带来很多收获。 Java程序员高频面试解析及知识点体系笔记 JVM篇——JVM知识点体系笔记 JVM篇

CGB2005-京淘11

我只是一个虾纸丫 提交于 2020-09-27 13:29:02
1.数据库主从配置 1.1 数据库挂载原理 1.1.1 检查主库的状态 1.1.2 开启数据库二进制文件 修改主库核心配置文件 my.cnf vim / etc / my . cnf 1.1.3 重启mysql数据库 说明:当修改好my.cnf文件之后,需要重启数据库,检查二进制日志文件是否存在. 1.1.4 检查主库状态 1.1.5 修改从库二进制文件 修改之后重启mysql数据库 命令: 检查从库状态: 1.2 实现主从的挂载 1.2.1 挂载分析 说明: 从库挂载主库 主库IP地址/主库端口号/登录用户名/登录的密码/二进制日志文件/读取位置. 1.2.2 实现主从挂载 /*我是从库信息 130*/ SHOW MASTER STATUS ; /*实现主从的挂载*/ CHANGE MASTER TO MASTER_HOST = "192.168.126.129" , MASTER_PORT = 3306 , MASTER_USER = "root" , MASTER_PASSWORD = "root" , MASTER_LOG_FILE = "mysql-bin.000001" , MASTER_LOG_POS = 245 /*启动主从服务*/ START SLAVE /*检查主从的状态*/ SHOW SLAVE STATUS /*如果报错 则重新配置*/ STOP SLAVE

Docker Hadoop、Spark、Kafka、Zookeeper等集群服务搭建

百般思念 提交于 2020-09-27 13:09:51
目录 Docker搭建Hadoop集群(Docker & Hadoop & HDFS & Yarn & Cluster) Docker搭建Myrocks实例(Docker & Mysql & Rocksdb) Docker搭建Kafka集群(Docker & Kafka & Cluster) Docker Container开启ssh服务 Docker Host创建swarm overlay网络 Docker Host设置自启动、国内源、代理 Docker、Docker Compose、Docker Machine各平台安装 Docker 搭建Zookeeper集群(Docker & Zookeeper & Replication) Docker 搭建Pika分片多主集群(Docker & Codis & Pika& Replication & Sharding) Docker搭建Spark集群(Docker & Spark & Cluster & Local & Standalone) Docker搭建SSDB分片多主集群(Docker & Twemproxy & SSDB & Replication & Sharding) Docker搭建MongoRocks副本分片集群(Docker & Mongodb & Rocksdb & Replication & Sharding)

Postgres是最好的开源软件

巧了我就是萌 提交于 2020-09-27 09:04:41
作者:布鲁斯·摩坚(Bruce Momjian)Bruce Momjian是PostgreSQL全球开发小组的联合创始人和核心团队成员,从1996年开始从事PostgreSQL。他从2006年开始在EnterpriseDB任职,现任EDB副总裁。 PostgreSQL的泛在与民主 泛在和民主是最能描述开源PostgreSQL(Postgres)数据库管理系统的两个词。而且,就像Linux一样,两者都是“最佳状态下开源”的绝佳示例。 就其普遍性而言,Postgres已有30多年的历史了,如今全球各地都可以在本地运行或作为托管(云)服务从数十个提供商处获得。我们经常听到它是开发人员最常选择的“首选” API。根据Stack Overflow的调查,如果你问开发人员他们最喜欢哪种数据库技术,Postgres排在第二位,仅次于Redis。 而且,在民主方面,该软件项目由PostgreSQL全球开发小组管理,他们是来自世界各地的开发人员和志愿者。软件项目有500多个贡献者。没有一个公司负责、支配或控制项目和软件开发,因此不存在依赖任何个人或实体的危险。此外,任何人都不可能“接管”Postgres。PostgreSQL全球开发小组一直致力于使PostgreSQL永远成为免费和开源的软件。从没有计划更改PostgreSQL许可证或以其他许可证来发布。 在2017年和2018年,Postgres被

2020年面试精华汇总:面试准备(心态+简历)+面试题目+面试经验!

落花浮王杯 提交于 2020-09-27 07:30:35
今天分享的BAT面试完整内容主要包含: 面试前的心态准备(3点建议) 技术硬实力包含的范围(50题目) 个人简历突出和优化(3点优化步骤) 个人软实力的提升(6点提升维度) BAT面试经验总结(1点总结) 1. 面试前的心态准备 心态可以影响你面试的准备,笔试的状态,实力的发挥,可以影响一个面试过程的方方面面。心态崩了,就只剩运气了,offer估计也就走远了。 那怎么调整自己的心态呢? 首先是要正视自己的能力,不轻视,不高估。 不高估就是要清楚自己的能力范围,不是说期望过高不好,但过高的期望会让你的心理变得脆弱,稍有不顺心态就有崩掉的趋势。因为面试毕竟有太大的偶然性,就算你达到了一定的水平,相应水平的岗位也不是百发百中的,更不要说身边有那么多大神和收割机,天天拿offer拒offer,对心理都是不小的冲击。 不要总给自己消极的暗示,心态差了积极调整。 大多数的人,总暗示自己说什么时间不多了,怎么每天过这么快效率怎么这么低。到笔试了,跟自己说这个算法太难了,肯定做不出来;临到面试了,跟自己说千万别问我linux内核,别问我分布式,问我肯定完;面试过之后,没有结果,就天天想肯定又挂了,唉我怎么这么菜。 如果这一系列的表现形成习惯,那心态这个系数最多0.5,能发挥出来的东西也都打了一半的折扣。凡事都不要太悲观,一个offer没拿到

谈谈高并发系统的限流

本秂侑毒 提交于 2020-09-27 04:40:26
开涛大神在博客中说过: 在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流 。本文结合作者的一些经验介绍限流的相关概念、算法和常规的实现方式。 缓存 缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,缓存也常常扮演者非常重要的角色。比如累积一些数据批量写入,内存里面的缓存队列(生产消费),以及HBase写数据的机制等等也都是通过缓存提升系统的吞吐量或者实现系统的保护措施。甚至消息中间件,你也可以认为是一种分布式的数据缓存。 降级 服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。降级往往会指定不同的级别,面临不同的异常等级执行不同的处理。根据服务方式:可以拒接服务,可以延迟服务,也有时候可以随机服务。根据服务范围:可以砍掉某个功能,也可以砍掉某些模块。总之服务降级需要根据不同的业务需求采用不同的降级策略。主要的目的就是服务虽然有损但是总比没有好。 限流 限流可以认为服务降级的一种,限流就是限制系统的输入和输出流量已达到保护系统的目的。一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行