随笔分类 - nosql提升
处理高并发,高性能的存储问题
摘要:clickhouse据说是用在大数据量的olap场景列式存储数据库,也有幸能够用到它在实际场景中落地。本篇就来说说简单的使用心得吧。 1. 整体说明 架构啥的,就不多说了,列式存储、大数据量、高性能。参见官方文档地址: https://clickhouse.com/docs/en/ 对于使用者而言,
阅读全文
摘要:上一篇文章中,我们看了get在es的实现过程,虽只是一个简单的单条查询,但看起来实现却非常之复杂。纠其原因,是我们围绕了太多外围的东西讲了,而其核心则无外乎三点:1. 定义id对应的机器节点; 2. 查找真正的docId; 3. 查找docId对应的field信息; 本篇,我们再看另一个es的重要功
阅读全文
摘要:前面讲的都是些比较大的东西,即框架层面的东西。今天咱们来个轻松点的,只讲一个点:如题,get单条记录的es查询实现。 1. get语义说明 es中要实现get的查询,直接就是一个url请求即可: curl http://localhost:9200/test/job/1 get是用于搜索单条es的数
阅读全文
摘要:hive原本不是用来做简单的crud的,但有时候我们就是有可能这么干,怎么办呢? hive 还是提供了相应的功能的,查询是最必须的,就无须多说了。 插入数据一般来说都是大批量的插入,一般用于从源数据中导入数据到hive中,然后经过hive加工后,写入到一张新的结果表。而这个表的数据一般也会很大,具体
阅读全文
摘要:业务最初的应用场景中,我们也许使用单机redis就可以应付业务要求,但并非一直可行。 比如单机的读写能力问题,单机的可用性问题,单机的数据安全性问题。这些都是许多互联网应用经常会遇到的问题,也基本上都有一套理论去解决它,只是百花齐放。 哨兵是Redis中解决高可用问题的解决方案之一,我们就一起来看看
阅读全文
摘要:谈到发布订阅模式,相信不会陌生,典型的观察者模式的实现。然而从表面来看,本地实现一个wait/notify通知、register/update调用, 实现一个远程mq服务, 还有本文说的 pub/sub, 其实道理都差不多。只是,同样的需求,针对不同的环境,实现上往往是有天壤之别的。 所以,我们就来
阅读全文
摘要:前面几篇我们已经完全理解了redis的基本功能的实现了。 但单靠基本功能实现,往往还是称不上优秀的项目的。毕竟,我们现在面对的都是复杂的环境,高并发的场景,大数据量的可能。 简而言之,现在的系统一般都需要支持分布式部署,不存在单点问题,才算是一个合格的系统。 而redis作为一个存储系统,单点问题肯
阅读全文
摘要:前面几篇文章,我们完全领略了redis的string,hash,list,set数据类型的实现方法,相信对redis已经不再神秘。 本篇我们将介绍redis的最后一种数据类型: zset 的相关实现。 本篇过后,我们对redis的各种基础功能,应该不会再有疑惑。有可能的话,我们后续将会对redis的
阅读全文
摘要:上两篇我们讲了hash和list数据类型相关的主要实现方法,同时加上前面对框架服务和string相关的功能介绍,已揭开了大部分redis的实用面纱。 现在还剩下两种数据类型: set, zset. 本篇咱们继续来看redis中的数据类型的实现: set 相关操作实现。 研究过jdk的hashmap和
阅读全文
摘要:上一篇讲了hash数据类型的相关实现方法,没有茅塞顿开也至少知道redis如何搞事情的了吧。 本篇咱们继续来看redis中的数据类型的实现: list 相关操作实现。 同样,我们以使用者的角度,开始理解list提供的功能,相应的数据结构承载,再到具体实现,以这样一个思路来理解redis之list。
阅读全文
摘要:Redis作为nosql数据库,kv string型数据的支持是最基础的,但是如果仅有kv的操作,也不至于有redis的成功。(memcache就是个例子) Redis除了string, 还有hash,list,set,zset。 所以,我们就来看看hash的相关操作实现吧。 首先,我们从作用上理解
阅读全文
摘要:上一篇文章从根本上理解了set/get的处理过程,相当于理解了 增、改、查的过程,现在就差一个删了。本篇我们来看一下删除过程。 对于客户端来说,删除操作无需区分何种数据类型,只管进行 del 操作即可。 零、删除命令 del 的定义 主要有两个: del/unlink, 差别是 unlink 速度会
阅读全文
摘要:经过前两篇的介绍,我们对整个redis的动作流程已经有比较清晰的认识。 接下来就是到具体的命令处理方式的理解了,想来我们用这些工具的意义也是在此。虽然没有人觉得,一个set/get方法会有难度,但是我们毕竟不是很清楚,否则也不至于在谈到深处就懵逼了。 我觉得本文的一个重要意义就是: 让set/get
阅读全文
摘要:上一篇文章,我们从框架层面,主要介绍了redis的启动过程,以及主要的命令处理流程逻辑。这些更多的都是些差不多的道理,而要细了解redis,则需要更细节的东西。 今天我们稍微内围的角度,来看看几个命令执行的重要方法,深入理解下redis的魅力所在。 首先,我们通过上一章知道,processComma
阅读全文
摘要:redis是用c语言的写的缓存服务器,有高性能和多种数据类型支持的特性,广受互联网公司喜爱。 我们要分析其启动过程,首先就要先找到其入口。 当然我们应该是要先分析 Makefile 文件,然后找到最终编译成的文件,然后再顺势找到C语言入口 main(); 这里咱们就不费那事了,一是这事很枯燥,二是我
阅读全文
摘要:在项目中时常会用到redis,redis看起来好像很难的样子,而且我也确认反复学习了很久,但是,总结下来,自己使用到的东西并不太多,如下作一些总结工作。 1、安装(单机) 1.1 windows, 直接下载,解压到某个目录即可使用。 1.2 linux , 下载安装包, tar 解压, make 编
阅读全文