Juya Cai

一文搞懂redis分布式锁

我们熟悉在多线程并发编程中,需要对共享资源加锁,使得混乱的并发访问降级为合理的串行访问。同理在分布式系统中,可能存在多个进程对一个共享资源进行并发的修改,比如某个进程的数据库数据;这个时候需要对这个数据库上分布式锁,以保证该数据能被串行访问。 分布式锁的性质 工程上对分布式锁规定需要如下几项核心性质: 独占性:在某一时刻,锁只能被一个取锁方持有 健壮性:不允许产生死锁,假设持有...

一文设计亿级redis实时排行榜

设计高并发实时排行榜所需redis基础 redis四大统计 基数统计 基数 / Cardinality 是指集合中不同的元素的数量,简单来说,就是去重后的个数。 二值统计 二值统计是指将数据分为两个类别或状态,成功失败这样的,并对这些数据进行计数和分析。 排序统计 排序统计涉及将数据按照一定的顺序(升序或降序)进行排序,以便分析比较。 聚合统计 将多个数据记录组合成一个集合,并对该集合进行数...

mysql特殊语法--更新不重复创建

实际开发中,我们经常会遇到这样的需求,在日常开发中,经常会遇到这样的需求:查看某条记录是否存在,不存在的话创建一条新记录,存在的话更新某些字段。正常我们会这样处理,先查询有没有,然后在insert。针对这个需求,mysql提供了更加方便的指令 insert into ... on duplicate key update ... 在insert的时候,如果insert的数据会引起唯一索...

protobuf序列化反序列化原理剖析

protobuf的数据类型大致可以分为以下几种: 变长编码类型Varints 固定32bits类型 固定64bits类型 有长度标识的变量 根据这些类型,编码方式也就分成四种。下面我来一一介绍一下不同数据类型的编码方式。 Varints编码 Varints编码用于处理变长编码类型。 核心思想其实就一句话:数字小的占用空间小,数字大的占用空间大。那要如何实现这个结果呢...

MySQL集群主从复制原理剖析

为了提高系统数据的高可用,通常会集群化部署MySQL,MySQL中又是使用了什么技术来实现其高可用的呢?答案是主从复制。主从复制保证集群内MySQL的数据保持一致性。主从复制的前提是binlog。 binlog 什么是binlog?binlog是Mysql Server层提供的在表结构或者表数据发生修改的时候进行保存的日志。每产生一条更新操作时,Server层就会产生一条binlog,在...

春季实习面试备战指南

前言 在一月份的实习面试中发现不少问题和需要进行补充的地方,在2月份的春季实习面试开始前,进行一些针对性的准备和学习,在这里发帖记录需要学习的内容。 需要准备的内容大致可以分为两个方向:cpp方向和go方向。由于cpp岗是在太少、加上就业形势不好,全部押宝cpp实在不是明智之举,因此打算在这个寒假多学一门语言 / GO。不过学习一门语言需要掌握的模块基本一致,可以快速速成。速成完语言学习后...