Nginx快速上手

入职半年来,一直在Nginx的基础上做模块开发,学到了很多东西,也碰到了很多坑。在业务开发的同时,由于对Nginx本身也是一知半解,造成了很多不必要的Bug。痛定思痛,很早以前就想系统的学习一下Nginx,迟迟没有抽出时间下定决心,我知道和以前浅析Redis一样,那是一个一旦开始了就停不下来的旅程。好勒,别立flag了,一篇一篇写下去吧。

阅读更多
iterm2下管理ssh的几点经验

工作了之后经常和服务器打交道,自己也搭了好几个虚拟机用于开发。那么,问题来了:如何有效地管理ssh呢?

一开始,我秉承着“好记性不如烂笔头的”的执念,把每个虚拟机的登录方式记在笔记上,每次登录的时候都要先去印象笔记中搜一下,然后复制粘贴。可想而知这样的效率有多低。为了更好地投身工作,节约ssh浪费的时间,我开始搜寻更有效率的方法。

阅读更多
Redis源码剖析--事件ae

Redis源码剖析搁浅了一段时间,由于自己对事件驱动以及Reactor模式的理解不够深,源码看起来比较吃力,思来想去,所幸自己去实现一个简单的事件驱动模型。于是,采用python的select和queue模块开发了一个简易聊天服务器,实践中学习到的东西很多,回头再来看Redis的ae事件源码,明显轻松多了。

阅读更多
2016已过去,2017请努力

过着2017年的日子,思考着2016年人生的变化,或许,最大的变化是懂得记录学习,记录生活吧。

阅读更多
Redis源码剖析--事务Multi

数据库事务,是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全部执行,要么全部不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源,这样可以简化错误恢复并使应用程序更加可靠。事务包括ACID特性,分别是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durablity(持久性)。Redis作为一个key-value数据库,当然也必须拥有事务处理功能,下面就一起去看看它是怎么实现的吧?

阅读更多
Redis源码剖析--AOF持久化

在前一篇博客Redis源码剖析–RDB持久化中,我们分析了RDB持久化就是按照特定的格式将服务器中数据库里面的数据写入到RDB文件中,在服务器下一次开启的时候,再按照该格式读取上来,从而保证了数据的持久化。今天,我们来看看另一种持久化操作—-AOF持久化。

阅读更多
Redis源码剖析--RDB持久化

众所周知,Reids是一个高效的内存数据库,所有的数据都存放在内存中。这种模式的缺点就是一旦服务器关闭后会立刻丢失所有存储的数据,Redis当然要避免这种情况的发生,于是其提供了两种持久化机制:RDB和AOF。它们的功能都是将内存中存放的数据保存到磁盘文件上,等到服务器下次开启时能重载数据,以免数据丢失。今天,我们先来剖析一下RDB持久化机制。

阅读更多
Redis源码剖析--发布与订阅Pubsub

在分析Notify通知功能的时候讲到,Notify是用过订阅和发布功能来发送通知的。本来按计划是要分析持久化的代码的,可是对这个pubsub实在是有点感兴趣,所以先分析这方面的代码。订阅和发布,顾名思义,就是客户端可以订阅某个频道,也可以向某个频道发布消息,有点像收音机的功能一样。

阅读更多
Mac下打造vim+Python开发环境

记得刚装ubuntu那会,对vim和terminal爱不释手,装各种插件DIY。换到mac上后接触到SublimeText和VScode,就再也没有去理会vim了。前几天看了点《程序员修炼之道》,里面说『最好精通一种编辑器,并将其用于所有编辑任务。如果不坚持使用一种编辑器,可能会面临现代的巴别特大混乱』

阅读更多
Redis源码剖析--通知Notify

Redis在2.8版本以后,增加了键空间(Keyspace Notifications future)通知功能,此特性允许客户端可以以订阅/发布的模式,接收那些对数据库中的键和值有影响的操作事件。Redis关于通知的源代码均在notify.c文件中实现,源码中只有三个功能函数,相对较为简单,但是要想理解其功能,就需要配合server.c和pubsub.c里面的部分代码。

阅读更多