Redis

Redis Cluster集群部署

≡放荡痞女 提交于 2020-10-20 06:09:36
1、安装docker环境 2、安装docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/1.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 3、下载redis相关镜像 docker pull redis:6.0.5-buster docker pull zvelo/redis-trib 4、编辑redis.conf ,选择一个配置文件目录,用于挂载到docker。本示例在一台机器上启动3个redis服务节点,因此需要编写三个redis.conf。redis.conf中的port不能一致 port 7000 #daemonize yes bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes 5、编写docker-compose.yaml文件, 添加如下内容。docker-compose学习地址: https://docs.docker.com/compose/compose-file/ version: '3'

12小时删!好“特殊”的资源,全网独此一份

青春壹個敷衍的年華 提交于 2020-10-20 04:12:05
兄弟!毫无套路!!! 福利: 1、 海量Java学习资料 : Java入门级,左神算法、马士兵_多线程,马士兵_Jvm,Redis,大数据,电子书 等 ! 2、 内部实体书籍(三选一!!!) 三选一哦,包邮到家... 我现在正在发放中!(如下图) 过了今天 ,任何人微信都不会通过了! 立即打开微信,长按 下面二维码扫一扫 记得备注: 666 一定要备注 666 !否则不通过! 注意!限今天! 立即打开微信,长按 下面二维码扫一扫 记得备注: 666 一定要备注 666 !否则不通过! 注意!限今天! 来源: oschina 链接: https://my.oschina.net/u/4327212/blog/4547414

记一次订单号事故

余生长醉 提交于 2020-10-20 02:02:44
记一次订单号事故 去年年底的时候,我们线上出了一次事故,这个事故的表象是这样的: 系统出现了两个一模一样的订单号,订单的内容却不是不一样的,而且系统在按照 订单号查询的时候一直抛错,也没法正常回调,而且事情发生的不止一次,所以 这次系统升级一定要解决掉。 经手的同事之前也改过几次,不过效果始终不好:总会出现订单号重复的问题, 所以趁着这次问题我好好的理了一下我同事写的代码。 这里简要展示下当时的代码: /** * OD单号生成 * 订单号生成规则:OD + yyMMddHHmmssSSS + 5位数(商户ID3位+随机数2位) 22位 */ public static String getYYMMDDHHNumber(String merchId){ StringBuffer orderNo = new StringBuffer(new SimpleDateFormat("yyMMddHHmmssSSS").format(new Date())); if(StringUtils.isNotBlank(merchId)){ if(merchId.length()>3){ orderNo.append(merchId.substring(0,3)); }else { orderNo.append(merchId); } } int orderLength = orderNo

自定义Spring-boot-starter

£可爱£侵袭症+ 提交于 2020-10-19 10:31:47
本文以Jedis举例 pom引入依赖 <groupId>com.bozhon</groupId> <artifactId>redis-spring-boot-starter</artifactId> <version>1.0-SNAPSHOT</version> <name>redis-spring-boot-starter</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency>

Python 分布式缓存之Reids数据类型操作详解

爱⌒轻易说出口 提交于 2020-10-18 13:37:57
1、Redis API 1.安装redis模块 $ pip3.8install redis 2.使用redis模块 import redis # 连接redis的ip地址/主机名,port,password=Noner = redis.Redis(host="127.0.0.1",port=6379,password="gs123456") 3.redis连接池 redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。默认,每个 Redis实例 都会维护一个 自己的连接池 。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现 多个Redis实例共享一个连接池 。 总之,当程序创建数据源实例时,系统会一次性创建多个数据库连接,并把这些数据库连接保存在连接池中,当程序需要进行数据库访问时,无需重新新建数据库连接,而是从连接池中取出一个空闲的数据库连接 import redis# 创建连接池,将连接保存在连接池中pool = redis.ConnectionPool(host="127.0.0.1",port=6379,password="gs123456",max_connections=10) # 创建一个redis实例,并使用连接池"pool"r = redis.Redis

面试大厂必看!凭借这份Java面试题,成功拿到阿里offer!

我们两清 提交于 2020-10-18 12:44:22
前言 一位小伙伴经过一个半月的面试准备,成功拿下了阿里的offer,小编把他遇到的面试题分享出来,希望能对即将面试的小伙伴有所帮助。 一、自我介绍 简单的介绍一下自己的工作经历与职责,在校或者在工作中主要的工作内容,主要负责的内容; 介绍下自己最满意的,有技术亮点的项目或平台,重点介绍下自己负责那部分的技术细节; 二、Java多线程 线程池的原理,为什么要创建线程池?创建线程池的方式; 线程的生命周期,什么时候会出现僵死进程; 说说线程安全问题,什么实现线程安全,如何实现线程安全; 创建线程池有哪几个核心参数? 如何合理配置线程池的大小? volatile、ThreadLocal的使用场景和原理; ThreadLocal什么时候会出现OOM的情况?为什么? synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性; 三、JVM相关 JVM内存模型,GC机制和原理; GC分哪两种,Minor GC 和Full GC有什么区别?什么时候会触发Full GC?分别采用什么算法? JVM里的有几种classloader,为什么会有多种? 什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处; 什么情况下我们需要破坏双亲委派模型; 常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值? JVM虚拟机内存划分、类加载器

终于,病毒向我伸出了魔爪......

自古美人都是妖i 提交于 2020-10-18 09:20:12
前言 服务器好端端的竟然中了挖矿病毒!!! 可怜我那 1 核 2 G 的服务器,又弱又小,却还免除不了被拉去当矿工的命运,实在是惨啊惨。 事情原来是这样的。。。 就在今天下午,我准备登陆自己的远程服务器搞点东西的时候,突然发现 ssh 登陆不上了。 如上,提示被拒绝。这个问题很明显就是服务器没有我的公钥,或者不识别我的公钥,然后拒绝登录。 这就很难办了,我确定我的公钥是一直没有变动过的,不应该会出现这种情况啊。 还有让我头疼的是,我当初为了安全起见,设置过此台服务器只能通过 ssh 的方式免密登录。而且禁止了密码直接登录,这样也防止了别人通过破解我的密码而登录服务器。 当前,只有我这个 mac 还有家里的 win 两台电脑有 ssh 权限。(其实,当时我也想到了这种情况,就怕万一有一天某台电脑登录不上,另外一台还能做备选。嘿嘿,我是不是很机智!) 那么,目前的解决办法,就是要么等着下班回家,用另外一个电脑操作,把当前这个电脑的公钥加到服务器的 authorized_keys 文件里。要么,就只能把服务器重装了。 但是,好奇心驱使我去探究一下,到底是什么原因导致了服务器连接不上,而不是直接重装服务器。那样的话,就太没意思了。 通过 VNC 方式登录服务器 因为我用的是腾讯云服务器嘛,于是,就登录到了腾讯云的控制台,想看一下是否还有其它“走后门”的方式,让我绕过 ssh

干货!全网跪求的“Spring Cloud 微服务 分布式系统实践 ”

拥有回忆 提交于 2020-10-18 09:13:31
导语: 本文首先介绍分布式系统和微服务的概念以及技术基础;然后介绍Spring Cloud的主要组件,包含服务治理和服务发现、服务调用、断路器、API网关、服务配置和服务监控等,这部分是本文的主要内容;接着介绍企业实践中经常用到的分布式技术,包括分布式数据库事务、分布式Redis缓存等;最后介绍远程过程调用(RPC)以及微服务设计和高并发实践。 第一部分 概述和基础 本部分将讲解分布式和微服务的基础知识和理念。并且简单介绍本文需要用到的基础知识。 本部分包含以下内容: 分布式和微服务概述; 技术基础; 第1章 分布式和微服务概述 (完整文章已经整理了一份五百多页的PDF文档,由于篇幅原因,文章只展示部分;)文末有免费获取方式 第2章 技术基础 第二部分 Spring Cloud 微服务 第3章 服务治理 Eureka 第4章 客户端负载均衡 Ribbon 第5章 断路器 Hystrix 第6章 新断路器 Resilience4j 第7章 声明式调用 OpenFeign 第8章 旧API网关 Zuul 第9章 新网关 Spring Cloud Gateway 第10章 配置 Spring Cloud Config 第11章 Spring Cloud Sleuth全链路追踪 第12章 微服务的监控 Spring Boot Admin 第三部分 分布式技术 第13章 生成唯一的ID

金九只剩银十,分享PDF离线版,GitHub上标星75k+超牛的《Java面试突击版》

馋奶兔 提交于 2020-10-18 07:41:08
前言 不论是校招还是社招都避免不了各种面试。笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个有章可循‘说的意思只是说应对技术面试是可以提前准备。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试: 1.自我介绍。(你可千万这样介绍: “我叫某某,性别,来自哪里,学校是哪个,自己爱干什么”,记住:多说点简历_上没有的,多说点自己哪里比别人强! ) 2.自己面试中可能涉及哪些知识点、哪些知识点是重点。 3.面试中哪些问题会被经常问到、面试中自己该如何回答。(强烈不推荐背题, 第一: 通过背这种方式你能记住多少?能记住多久? 第二: 背题的方式的学习很难坚持下去! ) 4.自己的简历该如何写。 "80%的offer掌握在20%的人手中"这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的offer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。 另外,大家要明确的很重要的几点是: 1.写在简历上的东西一定要慎重,这可能是面试官大量提问的地方; 2.大部分应届生找工作的硬伤是没有工作经验或实习经历; 3.将自己的项目经历完美的展示出来非常重要。

从每秒6000写请求谈起

爱⌒轻易说出口 提交于 2020-10-17 19:43:46
背景 每一个片子的幕后,都保留了你的观看记录,详细的记着你观看了几次,跳过了那些时长 ,据说根据这些数据可以分析出你喜欢哪个日本明星,以此来做定向推送...... 虽然看起来很简单的一个功能,其实涉及到的数据量非常大,极限情况下为你的用户数*视频数的乘积。 那么在只有两个网站服务器,一台sqlserver的情况下,该如何面对这样不算大数据量的写请求呢?为什么说是写请求呢?因为用户观看视频的每一秒你都需要记录下来,例如:视频的第十秒用户观看了。要想把这个功能搞定,首先需要定义几个事情: 记录用户观看视频情况的数据定义 和客户端交互的数据协议 数据库中记录的数据格式 如何解决服务器写的压力(毕竟单台服务器请求数还是比较大) 解决方案 用户观看视频进度定义 对于一个视频来说,假如有1个小时的时长,这3600秒对应着3600个是否已经观看的状态,对于观看状态来说,只有观看和未观看两种状态,所以一个bit足以,一个字节(byte)有8个bit,所以一个byte可以表示8秒的观看状态,以此为基础,进制越高,同样数量的字符表示的状态就越多。 客户端每次上传新的数据,需要和服务端已经存在的数据做位运算,例如: 01000 表示第二秒观看了 ,客户端新上传:00011 表示第4,5秒都观看了,对于用户而言这个视频第2,4,5 秒都看过,虽然只是一个简单的运算,但是量大的时候,对cpu的消耗不容小觑。