重新学习MySQL与Redis
文章平均质量分 87
本专栏介绍MySQL的基本知识,比如基本架构,存储引擎,索引原理,主从复制,事务等内容。当然也会讲解一些和sql语句优化有关的知识。
同时本专栏里也介绍了Redis的基本实现原理,包括数据结构,主从复制,集群方案,分布式锁等实现。
Java技术江湖
在下程序员黄小斜,前阿里Java工程师,4年码龄。 专注分享Java技术干货文,偶尔也吹水吐槽聊人生。
展开
-
Redis设计与实现学习总结
Redis设计与实现学习总结本文主要对Redis的设计和实现原理做了一个介绍很总结,有些东西我也介绍的不是很详细准确,尽量在自己的理解范围内把一些知识点和关键性技术做一个描述。如有错误,还望见谅,欢迎指出。 这篇文章主要还是参考我之前的技术专栏总结而来的。欢迎查看:重新学习Redishttps://blog.csdn.net/column/details/21877.html使用...原创 2018-07-01 23:55:44 · 8714 阅读 · 0 评论 -
Mysql原理与实践学习总结
数据库(MySQL)本文根据自己对MySQL的学习和实践以及各类文章与书籍总结而来。 囊括了MySQL数据库的基本原理和技术。本文主要是我的一个学习总结,基于之前的系列文章做了一个概括,如有错误,还望指出,谢谢。详细内容请参考我的系列文章:重新学习MySQL与Redishttps://blog.csdn.net/column/details/21877.html?数据...原创 2018-06-30 17:53:53 · 3387 阅读 · 0 评论 -
探索Redis设计与实现9:数据库redisDb与键过期删除策略
Redis源码阅读笔记--数据库redisDb2017年03月04日 00:29:26一. 数据库Redis的数据库使用字典作为底层实现,数据库的增、删、查、改都是构建在字典的操作之上的。redis服务器将所有数据库都保存在服务器状态结构redisServer(redis.h/redisServer)的db数组(应该是一个链表)里:struct redisServ...转载 2018-02-24 17:12:42 · 1295 阅读 · 0 评论 -
探索Redis设计与实现10:Redis的事件驱动模型与命令执行过程
Redis 中的事件驱动模型2018-03-22原文地址:https://www.xilidou.com/2018/03/22/redis-event/Redis 是一个事件驱动的内存数据库,服务器需要处理两种类型的事件。文件事件时间事件下面就会介绍这两种事件的实现原理。文件事件Redis 服务器通过 socket 实现与客户端(或其他redis服务器)的交互,文件事件就是服务器对 socket ...转载 2018-02-27 22:57:21 · 1306 阅读 · 0 评论 -
探索Redis设计与实现8:连接底层与表面的数据结构robj
Redis内部数据结构详解(3)——robj2016-06-14本文是《Redis内部数据结构详解》系列的第三篇,讲述在Redis实现中的一个基础数据结构:robj。那到底什么是robj呢?它有什么用呢?从Redis的使用者的角度来看,一个Redis节点包含多个database(非cluster模式下默认是16个,cluster模式下只能是1个),而一个database维护了从k...转载 2018-03-09 21:16:57 · 746 阅读 · 0 评论 -
探索Redis设计与实现7:Redis内部数据结构详解——intset
Redis内部数据结构详解(7)——intset2016-11-22本文是《Redis内部数据结构详解》系列的第七篇。在本文中,我们围绕一个Redis的内部数据结构——intset展开讨论。Redis里面使用intset是为了实现集合(set)这种对外的数据结构。set结构类似于数学上的集合的概念,它包含的元素无序,且不能重复。Redis里的set结构还实现了基础的集合并、交、差的操...转载 2018-03-13 19:13:01 · 693 阅读 · 0 评论 -
探索Redis设计与实现15:Redis分布式锁进化史
Redis分布式锁进化史近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。但是在工作和网络上看到过各个版本的Redis分布式锁实现,每种实现都有一些不严谨的地方,甚至有可能是错误的...转载 2018-02-14 20:10:40 · 994 阅读 · 3 评论 -
探索Redis设计与实现14:Redis事务浅析与ACID特性介绍
事务MULTI、EXEC、DISCARD和WATCH是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 EXEC命令...转载 2018-02-22 20:04:57 · 1122 阅读 · 0 评论 -
探索Redis设计与实现13:Redis集群机制及一个Redis架构演进实例
Redis实战(四) 集群机制1.Replication(主从复制) 1.1.配置主服务器 1.2.配置从服务器 1.3.测试 2.Sentinel(哨兵) 2.1.配置Sentinel 2.2.启动 Sentinel 2.3.测试 3.Twemproxy 4.Codis 5.Redis 3.0集群 5.1.环境搭建 5.2....转载 2018-02-22 20:46:29 · 1318 阅读 · 0 评论 -
探索Redis设计与实现12:浅析Redis主从复制
摘要早期的RDBMS被设计为运行在单个CPU之上,读写操作都由经单个数据库实例完成,复制技术使得数据库的读写操作可以分散在运行于不同CPU之上的独立服务器上,Redis作为一个开源的、优秀的key-value缓存及持久化存储解决方案,也提供了复制功能,本文主要介绍Redis的复制原理及特性。Redis复制概论数据库复制指的是发生在不同数据库实例之间,单向的信息传播的行为,通常由被复制方...转载 2018-02-22 21:42:05 · 1138 阅读 · 0 评论 -
探索Redis设计与实现11:使用快照和AOF将Redis数据持久化到硬盘中
使用快照和AOF将Redis数据持久化到硬盘中转自https://blog.csdn.net/xlgen157387/article/details/61925524前言我们知道Redis是一款内存服务器,就算我们对自己的服务器足够的信任,不会出现任何软件或者硬件的故障,但也会有可能出现突然断电等情况,造成Redis服务器中的数据失效。因此,我们需要向传统的关系型数据库一样对数据进行备份,将Red...转载 2018-02-22 22:00:33 · 837 阅读 · 0 评论 -
探索Redis设计与实现1:Redis 的基础数据结构概览
Redis内部数据结构详解(1)——dict 2016-05-31如果你使用过Redis,一定会像我一样对它的内部实现产生兴趣。《Redis内部数据结构详解》是我准备写的一个系列,也是我个人对于之前研究Redis的一个阶段性总结,着重讲解Redis在内存中的数据结构实现(暂不涉及持久化的话题)。Redis本质上是一个数据结构服务器(data structures server),以高效的方式实现了...转载 2018-01-13 11:26:12 · 1470 阅读 · 0 评论 -
探索Redis设计与实现2:Redis内部数据结构详解——dict
转自http://zhangtielei.comRedis内部数据结构详解(1)——dict2016-05-31如果你使用过Redis,一定会像我一样对它的内部实现产生兴趣。《Redis内部数据结构详解》是我准备写的一个系列,也是我个人对于之前研究Redis的一个阶段性总结,着重讲解Redis在内存中的数据结构实现(暂不涉及持久化的话题)。Redis本质上是一个数据结构...转载 2018-01-17 16:11:30 · 1016 阅读 · 0 评论 -
探索Redis设计与实现开篇:什么是Redis
redis 学习笔记这篇 redis 学习笔记主要介绍 redis 的数据结构和数据类型,并讨论数据结构的选择以及应用场景的优化。redis 是什么?Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景。Redis 数据结构动态字符串 (Sds) 双端列表 (LINKEDLIST) 字典 跳跃表 (SK...转载 2018-01-24 12:21:53 · 1176 阅读 · 0 评论 -
探索Redis设计与实现6:Redis内部数据结构详解——skiplist
Redis内部数据结构详解(6)——skiplist 2016-10-05本文是《Redis内部数据结构详解》系列的第六篇。在本文中,我们围绕一个Redis的内部数据结构——skiplist展开讨论。Redis里面使用skiplist是为了实现sorted set这种对外的数据结构。sorted set提供的操作非常丰富,可以满足非常多的应用场景。这也意味着,sorted set相对来说实现比较复...转载 2018-01-31 21:37:01 · 1261 阅读 · 0 评论 -
探索Redis设计与实现5:Redis内部数据结构详解——quicklist
2016-07-22本文是《Redis内部数据结构详解》系列的第五篇。在本文中,我们介绍一个Redis内部数据结构——quicklist。Redis对外暴露的list数据类型,它底层实现所依赖的内部数据结构就是quicklist。我们在讨论中还会涉及到两个Redis配置(在redis.conf中的ADVANCED CONFIG部分):list-max-ziplist-size...转载 2018-01-31 21:38:26 · 1765 阅读 · 0 评论 -
探索Redis设计与实现4:Redis内部数据结构详解——ziplist
转自http://zhangtielei.comRedis内部数据结构详解(4)——ziplist2016-07-07本文是《Redis内部数据结构详解》系列的第四篇。在本文中,我们首先介绍一个新的Redis内部数据结构——ziplist,然后在文章后半部分我们会讨论一下在robj, dict和ziplist的基础上,Redis对外暴露的hash结构是怎样构建起来的。...转载 2018-01-31 22:03:41 · 742 阅读 · 0 评论 -
探索Redis设计与实现3:Redis内部数据结构详解——sds
转自http://zhangtielei.comRedis内部数据结构详解(2)——sds 2016-06-05本文是《Redis内部数据结构详解》系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds。不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构。sds正是在Redis中被广泛使用的字符串结构,它的全称是Simple Dynamic String。与其它语言环境中出现的字符...转载 2018-02-06 14:37:58 · 760 阅读 · 0 评论 -
重新学习MySQL数据库11:以Java的视角来聊聊SQL注入
以Java的视角来聊聊SQL注入转自 javatikuJava面试那些事儿2017-08-09在大二就接触过sql注入,之前一直在学习windows逆向技术,认为web安全以后不是自己的从业方向,所以当时也就没有深入研究。工作多年来,本人也一直从事安全开发相关工作,随着Java的市场份额越来越重,在工作中接触Java的机会也越来越多,也是机缘巧合的契机,自己开始走向了偏 Java开...转载 2018-01-17 16:19:10 · 1946 阅读 · 1 评论 -
重新学习MySQL数据库10:MySQL里的那些日志们
同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。本文主要描述错误日志文件。MySQL日志文件系统的组成 a、错误日志:记录启动、运行或停止mysqld...转载 2018-01-25 13:21:13 · 1629 阅读 · 0 评论 -
重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系
转自https://tech.meituan.com/innodb-lock.htmlInnodb中的事务隔离级别和锁的关系前言:我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在...转载 2018-01-28 00:23:48 · 3217 阅读 · 0 评论 -
重新学习Mysql数据库8:MySQL的事务隔离级别实战
在Mysql中,事务主要有四种隔离级别,今天我们主要是通过示例来比较下,四种隔离级别实际在应用中,会出现什么样的对应现象。Read uncommitted (未提交读) Read committed (已提交读) Repeatable read (可重复读) Serializable (可串行化)在理解四种隔离级别之前,我们需要先了解另外三个名词:脏读 不可重...转载 2018-01-30 23:40:33 · 1475 阅读 · 0 评论 -
重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践
一、MySQL扩展具体的实现方式随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。关于数据库的扩展主要包括:业务拆分、主从复制、读写分离、数据库分库与分表等。这篇文章主要讲述数据库分库与分表(1)业务拆分在大型网站应用之海量数据和高并发解决方案总结一二一篇文章中也具体讲述了为什么要对业务进行拆分。业务起步初始,为了加快应...转载 2018-02-27 22:12:12 · 1325 阅读 · 0 评论 -
重新学习MySQL数据库12:从实践sql语句优化开始
本文不堆叠网上海量的sql优化技巧或是诀窍。只通过两个浅显易懂又实用的例子介绍mysql的sql语句优化。首先介绍一下一般的大表优化方案。当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五...原创 2018-02-27 22:43:33 · 1544 阅读 · 1 评论 -
重新学习MySQL数据库6:浅谈MySQL的中事务与锁
『浅入深出』MySQL 中事务的实现在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的;在这篇文章中,我们将对事务的实现进行分析,尝试理解数据库是如何实现事务的,当然我们也会在文章中简单对 MySQL 中对 ACID 的实现进行简单的介绍。事务其实就是并发控制的基本单位;...转载 2017-10-10 20:53:06 · 2779 阅读 · 0 评论 -
重新学习Mysql数据库1:无废话MySQL入门
开始使用我下面所有的SQL语句是基于MySQL 5.6+运行。MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称; 列(col): 具有相同数据类型的数据的集合; 行(row): 每一行用来描述...转载 2017-10-24 17:48:19 · 2115 阅读 · 0 评论 -
重新学习MySQL数据库开篇:数据库的前世今生
数据库的前世今生小李的数据库之旅无纸化办公小李是这个大学计算机科学与技术系的知名学生,他的编程能力了得,使用Pascal 炉火纯青,这都是高中期间参加全国青少年信息学奥林匹克竞赛打下的底子, 虽然没有获过奖,但在80年代末,90年代初很多人都不知道计算机是何物的时候,人家就可以在上面写程序了, 是非常让人敬佩的事情。所以一入学,辅导员就找到小李让他帮忙给系里开发...原创 2017-10-27 11:08:20 · 3838 阅读 · 1 评论 -
重新学习Mysql数据库4:Mysql索引实现原理
MySQL索引类型一、简介MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引二、语句CREATE TABLE table_name[col_name data type][unique|fulltext][index|key][index_name](col_name[length])[asc|desc]1.u...转载 2017-10-27 16:30:09 · 1894 阅读 · 0 评论 -
重新学习Mysql数据库3:Mysql存储引擎与数据存储原理
转自:https://draveness.me/mysql-innodb作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL、PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系的认知,所以最近两个月的时间看了几本数据库相关的书籍并且阅读了 MySQL 的官方文档,希望对各位了解数据库的、不了解...转载 2017-10-27 17:04:32 · 3462 阅读 · 0 评论 -
重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现
说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同。三类常见引擎:MyIsam:不支持事务,不支持外键,所以访问速度快。锁机制是表锁,支持全文索引InnoDB:支持事务、支持外键,所以对比MyISAM,InnoDB的处理效率差一些,并要占更多的磁盘空间保留数据和索引。锁机制是行锁,不支持全文索引Memory:数据是存放在内存中...转载 2017-12-10 17:10:00 · 1010 阅读 · 0 评论 -
重新学习Mysql数据库2:『浅入浅出』MySQL 和 InnoDB
作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL、PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系的认知,所以最近两个月的时间看了几本数据库相关的书籍并且阅读了 MySQL 的官方文档,希望对各位了解数据库的、不了解数据库的有所帮助。本文中对于数据库的介绍以及研究都是在 MySQL 上进行...转载 2017-12-10 17:18:48 · 2241 阅读 · 3 评论 -
重新学习Mysql数据库5:根据MySQL索引原理进行分析与优化
一:Mysql原理与慢查询MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很...转载 2017-12-10 17:19:30 · 4619 阅读 · 0 评论 -
从Java小白到收获BAT等offer,分享我这两年的经验和感悟
写在最前我写过很多篇秋招总结,这篇文章应该是最后一篇总结,当然也是最完整,最详细的一篇总结。秋招是我人生中一段宝贵的经历,不仅是我研究生生涯交出的一份答卷,也是未来职业生涯的开端。仅以此文,献给自己,以及各位在求职路上的,或者是已经经历过校招的朋友们。不忘初心,方得始终。前言在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司...原创 2017-03-08 09:40:54 · 37281 阅读 · 16 评论 -
Java工程师修炼之路(从小白到BAT的两年学习历程)
前言在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易,华为等。一路走来也遇到很多困难,也踩了很多坑,同时我自己也探索了很多的学习方法,总结了很多心得体会,并且,我对校园招聘也做了一些研究和相应的准备。在今年的秋季招聘结束以后,我也决定把这些东西全部都写成文字,做成专题,以便...原创 2017-03-08 19:32:08 · 35562 阅读 · 6 评论