Redis

被传“疯”了!GitHub上都在找的分布式核心笔记终于来了

微笑、不失礼 提交于 2020-10-24 07:58:26
什么是Java分布式? 简单的来说就是一个大型的系统往往被分为几个子系统来做,一个子系统可以部署在一台机器的多个 JVM 上,也可以部署在多台机器上。但是每一个系统不是独立的,不是完全独立的。需要相互通信,共同实现业务功能。 一句话来说:分布式就是通过计算机网络将后端工作分布到多台主机上,多个主机一起协同完成工作。 分布式作为现在作为Java开发必知必会的技术,同时分布式技术也属于面试中的必问题,那么我们就需要十分明白分布式,今天就为大家整理了一份Java分布式核心原理笔记,GitHub上人人都在找的分布式核心技术笔记终于终于免费开源了! 这份笔记涵盖了:分布式协调与同步、分布式资源管理与负裁调度、分布式计算技术、分布式通信技术、分布式数据存储、分布式高可靠(这份分布式笔记已经整理完毕,免费的领取方式在文末!) 分布式协调与同步 分布式互斥 什么是分布式互斥? I霸道总裁:集中式算法 民主协商:分布式算法 轮值CEO:令牌环算法 分布式选举 为什么要有分布式选举? 分布式选举的算法 长者为大: Bully算法 民主投票: Raft 算法 具有优先级的民主投票: ZAB算法 三种选举算法的对比分析 分布式共识 什么是分布式共识? 分布式共识方法 PoW PoS DPoS 三种分布式共识算法对比分析 分布式事务 什么是分布式事务? 如何实现分布式事务? 基于XA协议的二阶段提交方法

Redis的雪崩与穿透解决方法

走远了吗. 提交于 2020-10-24 04:43:28
1.Redis的穿透、雪崩与击穿 1.1出现穿透的原因 原因: 缓存穿透是指用户访问一个 数据库和Redis中不存在的key ,如果不对这类请求进行过滤拦截的话,请求每次都会穿过Redis直接打到数据库上,并且我们一般是缓存中没数据的时候去数据库中取,取出来之后再放到缓存中,但这类请求所需要的数据在数据库中也不存在,所以即使请求打到数据库上,最终缓存中还是没有数据,在这类 请求高并发 的情况下,数据库很快就会被拖垮,引起服务异常。 解决方法: 1.API网关 2.限定ip的访问次数. 3.缓存空值 之所以会发生穿透,就是因为缓存中没有存储这些空数据的key。从而导致每次查询都到数据库去了。那么我们就可以为这些key对应的值设置为null 丢到缓存里面去。后面再出现查询这个key 的请求的时候,直接返回null 。 4.布隆过滤器 布隆过滤器: 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。 相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。 我们可以在做事务型处理之后,将需要缓存的key放到布隆过滤器中,但是由于布隆过滤器只能保证可能存在

电商项目——Linux虚拟机中安装docker,mysql,redis_VirtualBox——第四章——上篇

梦想与她 提交于 2020-10-24 01:45:56
电商项目——初识电商——第一章——上篇 电商项目——分布式基础概念和电商项目微服务架构图,划分图的详解——第二章——上篇 电商项目——电商项目的虚拟机环境搭建_VirtualBox,Vagrant——第三章——上篇 电商项目——Linux虚拟机中安装docker,mysql,redis_VirtualBox——第四章——上篇 电商项目——电商项目的环境搭建_开发工具&环境搭建——第五章——上篇 文章目录 1:Linux下安装docker 2:配置docker阿里云镜像加速 3:docker中安装mysql 4:docker中安装redis 5:如何可以在虚拟机重新开启后,可以自动重启容器 前面第三章我们已经讲述了如何安装配置虚拟机,接下来我们就给虚拟机安装docker,mysql,redis 如果是使用VMware来创建虚拟机可以参考如下这篇文章(其实都一样) VMware下安装docker,mysql,redis 1:Linux下安装docker 如果大家还不知道Docker是什么,可以参考下面这篇文章 Docker——Docker介绍 安装下面的步骤一步一步执行就可以完成docker的安装 第一步:Docker的旧版本被称为Docker或Docker -engine。如果安装了这些,请卸载它们以及相关的依赖项。 $ sudo yum remove docker \ docker

华为鸿蒙背后:中国首个自己的开源基金会来了!

大兔子大兔子 提交于 2020-10-23 21:57:37
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨纯洁的微笑 来源丨纯洁的微笑 该来的,终究还是来了! 1 开源基金会 在上一次华为宣布鸿蒙2.0发布的时候,不知道大家有没有注意:华为余承东现场宣布,将把鸿蒙操作系统源代码捐赠给 开放原子开源基金会 。 当时我就对这个“开放原子开源基金会”很感兴趣,下来找了一下资料整理出来分享给大家,看看它到底是一个什么样的组织? 首先给大家科普一下,什么是开源基金会? 开源基金会用大白话来讲,就是一个独立的第三方开源组织,由企业赞助和个人捐赠资助,它通过为软件项目社区提供服务与支持实现价值, 使命是为公众利益提供软件。 世界上最大的开源开源基金会是Apache Software Foundation(简称ASF),成立于1999年,这是一个专门为支持开源软件项目而办的一个非盈利性组织。 比较著名的还有:Linux基金会、OpenStack基金会、Eclipse基金会、Cloud Foundry基金会等等。 作为程序员,我相信大家对这些名字都很熟悉,那么华为捐献的“开放原子开源基金会”到底是什么鬼? 2 中国首个开源基金会 大家看到以上的开源基金会,无疑都是来自美国,原因无它,世界上最好的开源环境在美国。 随着中国互联网公司的加速崛起

MySQL,首先你要了解的。笔记-1

こ雲淡風輕ζ 提交于 2020-10-23 19:40:50
数据库是什么? 数据库(Database System) 数据库的分类 数据库(Database System) 数据库系统(Database System),是由数据库及其管理软件组成的系统。 数据库就是存储数据的地方,传统意义上不包括文件系统 数据库是由2部分组成 db 数据库本身 – 我们看不见的 数据库管理系统 数据库的分类 现在世界上数据库分为3类 关系型数据库 RDBMS 关系数据库管理系统(Relational Database Management System:RDBMS)是指包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。 主流的数据库 最出名的3大关系型数据库:MySQL Oracle MSSQL(sql server) MySQL被Oracle收购了 非关系型数据库NOSQL 不是要取代传统关系型数据库 而是补充 NOSQL的意思就是Not Only SQL 产生的原因:关系型数据库太慢了! redis(基于内存的) mongodb(基于硬盘的) hbase(基于大数据集群的) NEWSQL 近几年才出现的 是RDBMS和NOSQL折中的数据库解决办法 来源: oschina 链接: https://my.oschina.net/u/4356138/blog/4281850

docker部署nginx

|▌冷眼眸甩不掉的悲伤 提交于 2020-10-23 19:22:30
1. 下载 nginx [root@localhost my.Shells]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io /redis latest 1e70071f4af4 6 weeks ago 106.7 MB [root@localhost my.Shells]# docker pull nginx //下载nginx Using default tag: latest Trying to pull repository docker.io /library/ nginx ... latest: Pulling from docker.io/library/ nginx e7bb522d92ff: Pull complete 6edc05228666: Pull complete cd866a17e81f: Pull complete Digest: sha256:285b49d42c703fdf257d1e2422765c4ba9d3e37768d6ea83d7fe2043dad6e63d [root@localhost my.Shells]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io /nginx latest

凭这些资料登上Redis的顶峰:阿里核心笔记/实战/面试专题/脑图,与之共勉

最后都变了- 提交于 2020-10-23 15:55:37
作为同时具备高性能、高可靠和高可扩展性的典型键值数据库,Redis不仅功能强大,而且稳定,理所当然地成为了大型互联网公司的首选。 众多大厂在招聘的时候,不仅会要求面试者能简单地使用Redis,还要能深入地理解底层实现原理,并且具备解决常见问题的能力。可以说,熟练掌握Redis已经成为了技术人的一个必备技能。 但是,在学习和使用Redis的过程中,总不可避免地遇见一些棘手的问题,比如: Redis的key和数据结构应该怎么设计?有什么最佳实践? Redis集群如何均衡数据?又如何横向扩展? 怎么保证数据的一致性?热点数据的问题怎么解决? RDB持久化生成的数据快照,每次更新是全量更新还是增量更新? 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题怎么解决? 如何高效阅读Redis源代码? 为了更好的学习Redis,吃透Redis,为大家带来三份扎实的学习资料, Redis核心笔记,Redis实战、Redis面试专题以及X-mind版本的Redis学习脑图 …… 由于篇幅原因,资料只做部分展示,需要获取完整资料的朋友麻烦 点击直达 话不多说,来吧!展示! Redis核心笔记 一 Redis 介绍 二 Redis 单机版安装配置 三 Redis 客户端 四 Redis 数据类型 五 Redis 事务 六 Redis 实现分布式锁 七 Redis 持久化方案 八 Redis

Linux下Centos7对外开放端口

谁说胖子不能爱 提交于 2020-10-23 13:31:02
最近在docker下搭建MySQL和Redis环境,远程linux主机内部网络都走通了,但是就是外网 无法连接远程服务器的MySQL和Redis。经过一番查找和学习,终于找到了问题,不仅远程服 务器上docker要做好内部和外部端口的映射,关键还要对对外开放的端口添加到防火墙中。 命令集合: (1)查看对外开放的端口状态 查询已开放的端口 netstat -anp 查询指定端口是否已开 firewall-cmd --query-port=666/tcp 提示 yes,表示开启;no表示未开启。 (2)查看防火墙状态 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld 开启防火墙 service firewalld start 若遇到无法开启 先用:systemctl unmask firewalld.service 然后:systemctl start firewalld.service (3)对外开发端口 查看想开的端口是否已开: firewall-cmd --query-port=6379/tcp 添加指定需要开放的端口: firewall-cmd --add-port=123/tcp --permanent 重载入添加的端口: