
数据库
文章平均质量分 95
有时需要偏执狂
一定要搞懂,千万不要心存侥幸,否则一些问题会让你痛苦不堪(源码面前,了无秘密)。
拥有一某三分地不容易,贵在坚持。
展开
-
memcached之网络模型详解
综述主线程创建多个子线程(这些子线程也称为worker线程),每一个线程都维持自己的事件循环,即每个线程都有自己的epoll,并且都会调用epoll_wait函数进入事件监听状态。每一个worker线程(子线程)和主线程之间都用一条管道相互通信。每一个子线程都监听自己对应那条管道的读端。当主线程想和某一个worker线程进行通信,直接往对应的那条管道写入数据即可。 模型的工作流程:主线程负责...原创 2018-05-08 22:03:31 · 1110 阅读 · 0 评论 -
Redis之动态字符串 链表 跳跃表 整数集
Redis是键值,内存缓冲系统。Memcached内部仅仅支持字符串,直接用一个hash表管理。但是Redis支持数据类型更多,因此内部肯定使用了更过的数据结构。内部数据结构是Redis高效的基础,这里主要详解内部最基本的数据结构以及操作其最基本的API。例如跳跃表,详解其创建、插入、删除、查找API,其他功能封装这些API不做详细解答。柔性数组说明柔性数据的好处在于,结构体里面既可以...原创 2018-06-05 12:02:15 · 608 阅读 · 0 评论 -
Redis之压缩表-ziplist
介绍作者嵌入式出生,所以对内存很敏感,嵌入式设备RAM通常是有限的,所以作者在牺牲效率的情况下,尽量压缩存储字符串或者整数列表的空间(先前使用链表,现在作者使用一个连续的空间+编码实现),于是压缩表就诞生的。 压缩列表是列表键和哈希键的底层实现。当一个列表键中仅仅包含少量列表项并且每个列表项要么是小整数,要么是短字符串时候。...原创 2018-06-06 10:37:52 · 730 阅读 · 0 评论 -
Redis之对象系统及5大对象的重要操作
Redis将对象键值对保证成对象使用原创 2018-06-06 17:45:17 · 803 阅读 · 0 评论 -
Redis之字典(hashtable)
1、介绍字典采用hashtable实现,碰撞采用拉链法,也就是通过链表联结key的hash值相同的节点。看过STL内部hash实现,这个就很容易,重新造了个轮子。套路,指针数组+多条链表。2、实现以下4个结构体是Redis的Hashtable实现的基础。typedef struct dictEntry {//hash节点 void *key;//键 union ...原创 2018-06-07 09:54:10 · 8924 阅读 · 4 评论 -
Redis之数据库结构体
介绍Redis支持数据类型有5种,这是指的键值对中的值的类型有5种。那么这个应该用什么存储呢。当然是hash表了。也就是通过使hashtable内部的value类型(指针指向对应的数据结构)是前面讲解的一些数据结构。那么就可以实现5中类型。这就是比memcached想的深远的一步。Redis将key一样的数据再重新包装了以下,这就大大简化了客户端代码的设计。这就是和memcached在数据内存...原创 2018-06-07 10:02:53 · 1399 阅读 · 0 评论 -
Redis之事件模型
介绍Redis将epoll自己简单的封装了,而并没有使用Libevent这种开源的高性能事件驱动库,而Redis为什么不使用这个呢,因为Redis的规则是轻量,而libevent支持平台多,里面实现了事件的优先级,一个事件可注册多个回调函数,evbuffer和其他对应Redis没用用的功能,所以Redis选择重新造就一个轮子,重新封装了epoll。这里看看作者如何简单封装epoll供他自己使用...原创 2018-06-07 10:06:25 · 2334 阅读 · 1 评论 -
Redis之集群
介绍集群是Redis最新的功能。实现了在服务器端的集群方案。实现原创 2018-06-07 10:10:33 · 180 阅读 · 0 评论 -
Redis之数据持久化
介绍RDBAOF原创 2018-06-10 09:05:09 · 428 阅读 · 0 评论 -
Redis之事务处理
介绍实现原创 2018-06-10 21:17:57 · 310 阅读 · 0 评论 -
Redis安装以及简单使用
https://github.com/antirez/redis 安装很简单的。原创 2018-05-28 21:50:46 · 251 阅读 · 0 评论 -
Memcached之set和get流程
setget原创 2018-05-16 20:34:59 · 1357 阅读 · 0 评论 -
缓存穿透、缓存雪崩、缓存失效概念及其解决方法
https://blog.youkuaiyun.com/fei33423/article/details/79027790 https://blog.youkuaiyun.com/zxp_cpinfo/article/details/70103114?locationNum=3&fps=1 https://blog.youkuaiyun.com/zeb_perfect/article/details/54135506原创 2018-06-02 17:55:36 · 795 阅读 · 0 评论 -
MySQL安装及介绍
1、安装sudo apt-get install mysql-server mysql-client2、查看安装端口情况sudo netstat -tap | grep mysql3、配置文件位置sudo vim /etc/mysql/my.cnf4、打开关闭服务/etc/init.d/mysql start/stop5、卸载...原创 2018-04-25 16:57:05 · 241 阅读 · 0 评论 -
Memcached之Slab、hash、LRU、items详解
SlabHash原创 2018-05-10 10:59:25 · 1846 阅读 · 1 评论 -
Memcached与Libmemcached介绍及其简单使用
简介memcached通常以服务器的形式运行,虽然称memcached是分布式数据库,但是其服务端本身不支持分布式业务,这就需要客户端自己实现分布管理以及内存池功能。Libmemcached是一个开源的Memcached客户端库,其内部实现了分布式管理、内存池等功能。通过API的形式提供出来,使用程序员可以专心上层业务逻辑,避免底层与memcached交互的细节。 Libmemcached特...原创 2018-05-17 22:05:33 · 7964 阅读 · 0 评论 -
InnoDB索引最通俗的解释
什么是索引工程实际中如何添加索引InnoDB索引实现树二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree和B+-tree。前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率。二叉...原创 2018-05-05 21:44:17 · 19069 阅读 · 0 评论 -
一致性Hash(Consistent Hashing)原理剖析
https://blog.youkuaiyun.com/lihao21/article/details/54193868 引入在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为: 图1...转载 2018-03-27 18:57:09 · 1610 阅读 · 0 评论 -
SQL入门及性能优化
SQL入门性能优化原创 2018-05-14 15:39:25 · 2270 阅读 · 0 评论 -
InnoDB的事务与锁
事务构成单一逻辑工作单元的操作集合称作事务。例如淘宝买东西,从你账户中扣款到淘宝账户,这就是一个事务,涉及两个读写操作。要么都成功,要么都不成功。 事务具有4大特性:原子性:事务所有操作在数据库中要么全部正确反应,要么完全不反应。一致性:隔离执行事务时,保持数据库前后数据的一致性。这是事务程序员的责任。隔离性:尽管多个事务并发执行,系统也得确保其中一个事务正常执行而不被来自并发执行...原创 2018-05-07 19:33:25 · 812 阅读 · 0 评论 -
结合源码分析Memcached与Redis实现
Memcached 与 Redis 实现的对比。 Redis和Memcached的区别 选redis还是memcache,源码怎么说?综述memcache和redis是互联网分层架构中,最常用的kv键值缓存。将常用数据缓存在内存中,加快查询速度,检索数据库服务器的压力非常重要。在选型的时候到底是选择memcache还是redis必须根据实际的应用场景选择。事件网络模型Memca...转载 2018-06-19 22:02:44 · 839 阅读 · 0 评论