主从复制
同 MySQL 一样,为了满足 HA (高可用)特性和容灾备份机制,Redis 也同样支持复制技术。主从同步(主从复制)是基于复制技术实现高可用的其中一个,后面的哨兵(sentinel)和集群(cluster)也是基于复制技术演化而来。
我们常说的主(master)和从(slave)在 MySQL 中是:
source(早先版本称为 m...
前言
在了解 Redis 的复制技术之前,我们先来看看 MySQL 的主从复制。
MySQL 的日志类型
服务层面的日志:
错误日志(Error log) - 记录 MySQL程序本身启动、停止、运行时所遇到的问题。默认开启,无法关闭。
常规查询日志(General query log) - 记录客户端连接后,执行了哪些 SQL 语句。默认关闭,...
管道概述
Q:什么是管道?
一种通过一次发出多个命令而无需等待每个命令响应的技术,其目是用来提高 Redis 的性能。在官方网站上会有更多的信息可以参阅—— https://redis.io/docs/manual/pipelining/
# 比如我要存放 3 个 KV 对,如果使用 set 命令,需要交互三次
192.168.100.3:6379...
RDBMS 中的事务
众所周知,关系型数据库的事务拥有四大要素/属性:
A :原子性(atomicity,或称不可分割性),事务中的操作要么都发生,要么都不发生,是一个不可分割的工作单位;
C :一致性(consistency),指数据的规则在事务前后是保持一致的
I :隔离性(isolation,又称独立性),就是指一个事务的执行不会被其他事务...
基本概述
持久化:在 Redis 当中,将某一时刻内存中的数据保存到磁盘的过程,我们称为 「持久化」 或 「快照持久化」。默认情况下,保存的文件名称为 dump.rdp。当 Redis 实例启动后,会自动读取 dump.rdb 中的数据并将其加载到内存当中进行数据的恢复。如果要完全禁用 RDB 持久化,可在配置文件这样配置——save "...
基本地理知识
如同 ES 中的 geo_point 字段类型,geospatial 是一种使用经纬度标识位置的数据类型。在一些使用地理位置定位的应用中特别常用,例如打车时的地理位置坐标、发快递时填写的发件人地址、外卖附近的店铺、地图中附近的加油站、汽车地图导航等等。
地球是一个三维的球体,但是人们为了标识地理位置的某一位置,使用了二维的坐标轴系统(...
消息队列概述
消息队列 是分布式系统中不可缺少的组件之一,主要有异步处理、应用解耦、限流削峰的功能。目前广为使用的消息队列有:
RabbitMQ
RocketMQ
Kafka
集群:强调的是计算机的物理形态与统一管理,但有时也强调软件的集群——将同一个软件(或组件或系统)部署在集群环境的各个计算机上,这也被称为集群。
分布式:指的是将一个业务...
bitfield 概述
bitfields(位域):位域是计算机中的术语,也称 位段,它是指信息在存储时,并不需要占用一个完整的字节,而只需占用一个或几个二进制位,这样做的目的是为了节约存储空间。
在 C 编程语言中,除了基本的数据类型(char、short、int、、long、float、double)外,还有一些特殊的数据类型,如下图所示:
...
bitmap概述
除了基本的常用的五大数据类型(string、hash、list、set、zset)之外,还有其他的五大特殊数据类型:
bitmap:位图
bitfield:位域
stream:流
geospatial:地理位置经纬度
HyperLogLog:一种纯数学的概率算法
bitmap 数据类型是 string 类型的拓展,其本质是一个...
回顾
zset、hash 或 list 都直接或间接使用了 ziplist。当zset、hash 中的元素个数较少且都是短字符串时,redis 的底层会使用 ziplist 作为其底层的数据。而 list 则使用了 quicklist 这种数据结构。
关于 list 底层数据结构的实现,随着版本的更替有所不同。
早期版本使用 linkedlist...