
数据库
hodgeKou
这个作者很懒,什么都没留下…
展开
-
Redis运维和开发学习目录
Redis运维和开发学习笔记-全书思维导图Redis运维和开发学习笔记(1) Redis简介Redis运维和开发学习笔记(2) redis持久化Redis运维和开发学习笔记(3)redis搭建集群Redis运维和开发学习笔记(4) Redis参数意义Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令Redis运维和开发学习笔记(7) 内存管理和过期策略...原创 2020-06-11 14:56:53 · 284 阅读 · 0 评论 -
rdb和aof到底哪个快
rdb和aof到底哪个快?大多数情况rdb比aof快!取决因素是fsync策略具体选择aof还是rdb应根据业务场景选择。纠结于两者哪个更快意义不大测试数据数据量rdb时间rdb文件大小5000076s1.1M100000197s2.1M150000235s3.1M200000305s4.3M数据量aof时间ao...原创 2020-01-27 21:02:39 · 1474 阅读 · 0 评论 -
RDB和AOF速度测试
同一台机器测试Redis3.2Redis5.0.7Linux python 3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linuxrdb测试步骤1. 修改redis.conf配置文件开启rdb(测试aof时,注释掉rdb,并重启redis)# sa...原创 2020-01-27 14:34:28 · 640 阅读 · 0 评论 -
MySQL事务隔离级别
事务的基本要素(ACID)原子性(Atomicity)事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。一致性(Consistency)事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣...原创 2020-01-08 00:28:13 · 186 阅读 · 0 评论 -
redis源码剖析(十六)——服务端思维导图整理
redis服务端思维导图整理原创 2019-12-29 11:19:27 · 289 阅读 · 0 评论 -
Redis运维和开发学习笔记-全书思维导图
Redis运维和开发学习笔记-全书思维导图图片过大,无法上传。链接:https://pan.baidu.com/s/13pnEMBEdLgjZNOOEAuDvEQ 密码:qhch原创 2019-12-29 11:18:16 · 253 阅读 · 0 评论 -
redis源码剖析(十五)——客户端思维导图整理
redis源码剖析(十五)——客户端执行逻辑结构整理原创 2019-12-27 23:34:45 · 198 阅读 · 0 评论 -
redis源码学习笔记目录
Redis源码分析(零)学习路径笔记 Redis源码分析(一)redis.c //redis-server.c Redis源码分析(二)redis-cli.c Redis源码剖析(三)——基础数据结构原创 redis源码剖析(四)跳表redis源码剖析(五)—— 字符串,列表,哈希,集合,有序集合redis源码剖析(六)—— Redis 数据库、键过期的实现redis源码剖析(七)—...原创 2019-12-26 16:55:44 · 304 阅读 · 0 评论 -
redis源码剖析(十四)—— dump.rdb文件分析工具
分析rdb文件的工具安装git clone https://github.com/sripathikrishnan/redis-rdb-tools.gitsudo pip install --upgrade pipsudo pip install python-lzf分析以n开头的keyrdb --command justkeyvals --key "n*" /home/kou/r...原创 2019-12-17 16:23:13 · 704 阅读 · 0 评论 -
MySQL为什么要用数字做自增主键?
1.MySQL为什么要用数字做自增主键?首先为什么我们使用的是int类型,而不是varchar类型int永远是固定的4个字节,而char类型是1~255字节之间优点占用空间小,节省CPU开销在使用中,通常会在主键上建立索引,使用整形可以将更多地索引载入内存,提高性能使用整形才可以使用AUTO_INCREAMENT缺点产生锁竞争的问题在某个时刻,用户甲、用户乙、用户丙可能...原创 2019-12-17 12:29:34 · 1833 阅读 · 0 评论 -
redis源码剖析(十三)—— dump.rdb文件分析
文章目录操作方式查看rdb文件参考文档redis作者解释rdb和aof的不同redisRDB文件格式Sripathi Krishnam操作方式127.0.0.1:9999> flushallOK127.0.0.1:9999> set name hodgeOK127.0.0.1:9999> saveOK查看rdb文件[root@python src]# od -...原创 2019-12-05 10:37:11 · 1633 阅读 · 0 评论 -
redis源码剖析(十二)—— RDB持久化
文章目录RBD文件载入RDB文件分析源码分析核心代码rdb文件写入rdb写入关键函数rdbSaveObjectTyperdbSaveStringObjectRawrdbSaveLongLongAsStringObject为避免数据丢失。将redis中的数据保存到磁盘中,避免数据意外丢失。RBD文件载入在redis启动时检测是否有rdb文件,有的话会自动载入。命令作用...原创 2019-12-05 10:34:16 · 2667 阅读 · 0 评论 -
mysql row_id为什么是6字节?为什么是8字节
mysql row_id是几个字节?row_idInnoDB表中在没有默认主键的情况下会生成一个6字节空间的自动增长主键为什么row_id是整型还是字符型?源代码中 row_id 是 ib_uint64_t这是 8字节 uint64_t 是整形为什么是6个字节?P.S. Base64编码说明Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6...原创 2019-11-18 15:51:04 · 2570 阅读 · 0 评论 -
事务隔离级别动图演示
事务的基本要素(ACID)原子性(Atomicity)事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。一致性(Consistency)事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣...原创 2019-11-18 13:52:48 · 319 阅读 · 0 评论 -
redis源码剖析(十一)—— Redis字符串相关函数实现
文章目录初始化字符串字符串基本操作字符串拼接操作other获取指定范围里的字符串将字符串中的所有字符均转为小写的形式将字符串中所有字符均转为大写的形式字符串比较other#define SDS_ABORT_ON_OOM#include "sds.h"#include <stdio.h>#include <stdlib.h>#include <stdarg....原创 2019-11-13 15:09:58 · 415 阅读 · 0 评论 -
redis源码剖析(九)—— Redis双链表实现
adlist.htypedef struct listNode { struct listNode *prev; struct listNode *next; void *value;} listNode;typedef struct list { listNode *head; listNode *tail; void *(*dup)(vo...原创 2019-11-13 15:07:47 · 158 阅读 · 0 评论 -
redis源码剖析(八)—— 当你启动Redis的时候,Redis做了什么
文章目录启动过程初始化server结构体main函数会调用initServer函数初始化服务器状态载入持久化文件,还原数据库开始监听事件流程图启动过程初始化server结构体从配置文件夹在加载参数初始化服务器载入持久化文件开始监听事件初始化server结构体服务器的运行IDredis使用的默认端口号,是在server.h定义的CONFIG_DEFAULT_SERVER_PO...原创 2019-11-13 15:07:13 · 186 阅读 · 1 评论 -
redis源码剖析(七)—— Redis 数据结构dict.c
hash表/** * 创建Hash表,Hash表的大小为size */int dictExpand(dict *ht, unsigned long size){ dict n; /* the new hashtable */ //重设Hash表的大小,大小为2的指数 unsigned long realsize = _dictNextPower(size); ...原创 2019-11-13 15:06:32 · 371 阅读 · 0 评论 -
redis源码剖析(六)—— Redis 数据库、键过期的实现
文章目录数据库的实现数据库读写操作键的过期实现数据库的实现我们先看代码 server.h/redisServerstruct redisServer{ ... //保存 db 的数组 redisDb *db; //db 的数量 int dbnum; ...}再看redisDb的代码:typedef struct redisD...原创 2019-11-13 15:05:38 · 291 阅读 · 0 评论 -
redis源码剖析(五)—— 字符串,列表,哈希,集合,有序集合
文章目录对象REDIS_STRING (字符串)REDIS_LIST 列表REDIS_SET (集合)REDIS_ZSET (有序集合)REDIS_HASH (hash表)int refcount(引用计数器)unsigned lru:REDIS_LRU_BITS对象对于 Redis 来说使用了 redisObject 来对所有的对象进行了封装:typedef struct redisObj...原创 2019-11-13 15:03:25 · 397 阅读 · 0 评论 -
redis源码剖析(四)跳表
文章目录整数集合跳跃表压缩列表总结整数集合当一个集合只包含整数,且这个集合的元素不多的时候,Redis 就会使用整数集合 intset 。首先看 intset 的数据结构:typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // ...原创 2019-11-13 15:02:33 · 282 阅读 · 0 评论 -
redis源码剖析(三)——基础数据结构
文章目录SDS链表字典这篇文章关于 Redis 的基础数据:SDSSDS (Simple Dynamic String)是 Redis 最基础的数据结构。直译过来就是”简单的动态字符串“。Redis 自己实现了一个动态的字符串,而不是直接使用了 C 语言中的字符串。sds 的数据结构:struct sdshdr { // buf 中已占用空间的长度 int le...原创 2019-11-13 14:42:20 · 247 阅读 · 0 评论 -
Redis源码分析(二)redis-cli.c
文章目录1. int main()2. parseOptions(int argc, char **argv) 进行ip和port的改变3. lookupCommand(char *name) 查找命令,判断命令合法3.2 strcasecmp(name,cmdTable[j].name)3.1 redisCommand cmdTable[]4. cliSendCommand(int argc, ...原创 2019-11-13 14:41:19 · 1512 阅读 · 0 评论 -
Redis源码分析(一)redis.c //redis-server.c
Redis源码分析(一)redis.c //redis-server.c入口函数 int main() 4450 int main(int argc, char **argv) { 4451 initServerConfig(); 4452 if (argc == 2) { 4453 ResetServerSaveParams(); 4454 ...原创 2019-11-13 14:40:31 · 906 阅读 · 0 评论 -
Redis源码分析(零)学习路径笔记
文章目录第一阶段第二阶段 熟悉Redis的内存编码结构第三阶段 熟悉Redis数据类型的实现第四阶段 熟悉Redis数据库的实现第五阶段 熟悉客户端和服务器端的代码实现第六阶段 这一阶段主要是熟悉Redis多机部分的代码实现关于测试方面的文件有一些工具类的文件如下SORT命令的实现一些封装类的代码实现第一阶段阅读Redis的数据结构部分,基本位于如下文件中:内容文件名内存...原创 2019-11-13 14:39:49 · 318 阅读 · 1 评论 -
Redis运维和开发学习笔记(7) 内存管理和过期策略
Redis运维和开发学习笔记(7) 内存管理和过期策略文章目录Redis运维和开发学习笔记(7) 内存管理和过期策略内存回收策略惰性删除定时任务删除maxmemory过期策略allkeys-lru主从搭建测试搭建完毕主从测试结果volatile-lru测试结果volatile-ttl测试结果allkeys-lru内存回收策略惰性删除惰性删除用于当客户端读取带有超时属性的键时,如果已经超过键...原创 2019-10-26 09:36:40 · 433 阅读 · 0 评论 -
Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令
Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令文章目录Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令info serverinfo clientinfo memoryinfo persistenceinfo statsinfo commandstatsinfo cpuinfo clusterinfo keyspaceinfo server...原创 2019-10-26 09:35:39 · 644 阅读 · 0 评论 -
Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式
Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式主从复制将主节点的数据改变同步给从节点作用备份数据读写分离存在的问题:手动干预切主等操作主节点的写能力受到单机限制主节点的存储能力受到单机限制主从模式的故障恢复当主节点发生故障时,客户端连接主节点失败,两个从节点和主连接失败(人工)选取一个从节点slaveof no one使其成为新...原创 2019-10-26 09:35:11 · 247 阅读 · 0 评论 -
Redis运维和开发学习笔记(4) Redis参数意义
Redis运维和开发学习笔记(4) Redis参数意义文章目录Redis运维和开发学习笔记(4) Redis参数意义参数意义参数意义Client连接 问题id=567800790 addr=10.18.17.217:37310 fd=1572 name= age=2039114 idle=2034860 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 q...原创 2019-10-26 09:33:29 · 272 阅读 · 0 评论 -
Redis运维和开发学习笔记(2) redis持久化
Redis运维和开发学习笔记(2) redis持久化文章目录Redis运维和开发学习笔记(2) redis持久化持久化持久化方式一:RDB触发~~的三种~~方式1. save命令2. bgsave配置触发机制RDB 总结持久化方式二:AOFAOF的三种策略三种策略的优缺点AOF重写机制持久化redis将所有数据保存在内存中,对数据的更新异步地保存在磁盘上快照MySQL Dump...原创 2019-10-26 09:32:58 · 210 阅读 · 0 评论 -
Redis运维和开发学习笔记(3)redis搭建集群
Redis运维和开发学习笔记(3)redis搭建集群文章目录Redis运维和开发学习笔记(3)redis搭建集群Redis集群搭建Redis集群搭建cp /etc/redis.d/redistest_7001.conf /etc/redis.d/redistest_XXXX.conf:%s/7001/xxxx/g配置文件内容:cluster-enabled yes#####...原创 2019-09-25 15:28:32 · 301 阅读 · 0 评论 -
Redis运维和开发学习笔记(1) Redis简介
文章目录Redis的特性速度快持久化多种数据结构主从复制高可用和分布式典型的应用场景Redis启动和可执行文件Redis可执行文件说明启动方式验证redisredis常用配置redis数据结构和内部编码Redis是单线程,不会同时执行两条命令哈希慢查询pipelineRedis的特性速度快性能:10w ops(每秒10w次读写)Redis 使用内存(寄存器>一级缓存>二级缓存...原创 2019-09-24 20:28:33 · 189 阅读 · 0 评论 -
mysql建表sql
mysql建表文章目录mysql建表mysql学生表插入数据建表,学生和idgroup byinner joinmysql学生表CREATE TABLE `courses` (`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增id',`student` VARCHAR(255) DEFAULT NULL COMMENT '学...原创 2019-09-20 14:26:04 · 10317 阅读 · 0 评论 -
判断一个数字是否存在于某一个数据之中
哈希表位图布隆过滤器= 哈希表+位图原创 2019-07-14 09:24:57 · 2018 阅读 · 0 评论 -
布隆过滤器的原理、应用场景和源码分析实现
原理布隆过滤器数据结构布隆过滤器是一个 bit 向量或者说 bit 数组,长这样:如果我们要映射一个值到布隆过滤器中,我们需要使用多个不同的哈希函数生成多个哈希值,并对每个生成的哈希值指向的 bit 位置 1。例如针对值 “baidu” 和三个不同的哈希函数分别生成了哈希值 1、4、7,则上图转变为:Ok,我们现在再存一个值 “tencent”,如果哈希函数返回 3、4、8 的话,图...原创 2019-07-14 09:24:28 · 1331 阅读 · 0 评论 -
位图原理、代码实现及应用实例
位图的原理:在位图中采用比特位表示对应的元素存在或者不存在0:不存在1:存在例如一个int整数有32个比特位可以表示0-31个整数。再举一个例子存入的数字为8988首先: 8988/32 = 280其次: 8988%32 = 28再来一个例子存入的数字16首先: 16/32 = 0其次: 16%32=16位图的应用给两个文件,分别有100亿个整数,我们...原创 2019-07-14 09:23:42 · 1553 阅读 · 0 评论 -
Mysql5.7后的password加密和md5
5.7之后password函数旧版16位,新版41位,可用select password(‘123456’)查看。md5加密算法,只有16位和32位两种authentication_string且5.7之后移除了password,它采用了新的算法5.7之前mysql> select user,host,password from mysql.user;ERROR 105...原创 2019-06-16 12:19:15 · 7533 阅读 · 0 评论 -
mysql5.7初始密码查看及密码重置
查看初始密码grep 'temporary password' /var/log/mysqld.logcat /root/.mysql_secretmysql密码找回密码重置vi /etc/my.cnf在[mysqld]下加上 skip-grant-tables,如:[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/m...原创 2019-03-15 10:47:08 · 6700 阅读 · 0 评论 -
mysql索引回表
先索引扫描,再通过rowid去取索引中未能提供的数据,即为回表。如果语句是 select * from T where ID=500,即主键查询方式,则只需要搜索 ID 这棵 B+ 树;如果语句是 select * from T where k=5,即普通索引查询方式,则需要先搜索 k 索引树,得到 ID 的值为 500,再到 ID 索引树搜索一次。这个过程称为回表。也就是说,基于非主键索引...原创 2019-02-18 15:23:22 · 16195 阅读 · 1 评论 -
Mac Redis安装入门教程
redis安装brew install redis如果需要后台运行 redis 服务,使用命令brew services start redis如果不需要后台服务,则使用命令redis-server /usr/local/etc/redis.conf启动redis服务执行以下命令/usr/local/bin/redis-server /usr/local/etc/redis.con...原创 2019-01-31 15:30:33 · 661 阅读 · 0 评论