Redis核心技术与实战:(一)基础架构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis核心技术与实战:(一)基础架构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2285字,纯文字阅读大概需要4分钟。
内容图文
![Redis核心技术与实战:(一)基础架构](/upload/InfoBanner/zyjiaocheng/865/6dac2d8e4a6c49edae90ce51e24d114f.jpg)
01 基本架构:一个键值数据库应该包含什么?
我们想构造一个简单的键值数据库SimpleKV,它的基础架构是什么样的?首先放出作者设计的简单的键值数据库SimpleKV与redis架构的对比图,你想造的KV数据库是什么样的,这样可以更好的理解redis的基本架构。
大体来说,一个键值数据库包括了访问框架、索引模块、操作模块、存储模块四部分。
开始构造SimpleKV时,首先就要考虑里面可以存什么样的数据,可以对数据进行什么样的操作,也就是数据模型和数据接口。看似简单,实际上是我们理解Redis经常用于缓存、秒杀、分布式锁等场景的重要基础。
可以存放哪些数据?--- 数据模型
对于键值数据库而言,简单的数据模型就是key-value模型。对于生产环境中的KV数据库而言,value类型还可以试复杂的类型,比如Redis支持的value类型包括了String、哈希表、列表、集合等,而memcached仅支持String类型。
可以对数据做什么操作?--- 操作接口
- put:新写入或更新一个key-value对;
- get:根据一个key读取相应的value值;
- delete:根据一个key删除整个key-value对;
- scan:根据一段key的范围返回对应的value值;
键值对保存在内存还是外存?
内存:读写很快,内存访问速度一般都在百ns级别。但是,一旦掉电,所有数据都会丢失。
外存:虽然数据可以避免丢失,但是受限于此磁盘的慢速读写,通常在几ms级别,数据库整体性能会拉低。
比如缓存场景下,数据需要能够快速访问但允许丢失,那么这种场景通常采用内存保存键值数据库。Memcached和Redis都属于内存键值数据库。
什么是访问模式? --- 访问模块
通常有两种:一种是通过函数库的调用的方式供外部应用使用;另一种通过网络框架以Socket通信的形式对外提供键值对操作。例如,RocksDB以动态链接库的形式使用,而Redis和Memcached通过网络框架访问。
I/O模型设计,键值数据库网络框架收到网络包,并按照相应的协议进行解析之后,就可以知道, 客户端想写入一个键值对,并开始实际的写入流程。此时,我们会遇到一个系统设计上的问题,简单来说,就是网络连接的处理、网络请求的解析,以及数据存取的处理,是用一个线程、多个线程,还是多个进程来交互处理呢?
如何定位键值对的位置?--- 索引模块
索引的作用是让键值数据库根据key找到相应的value的存储位置,进而执行操作。Memcached和Redis采用哈希表作为key-value索引,而RocksDB则采用调表作为内存中的key-value索引。
不同操作的具体逻辑是怎样的? --- 存储模块
SimpleKV采用了常用的内存分配器glibc的malloc和free。但是键值数据库的键值对通常大小不一,glibc在处理随机的大小内存块时,表现不好,容易出现严重的内存碎片问题。Redis的内存分配器提供了更多的的选择,分配效率也不一样。
因为SimpleKV重启后能快速提供服务,所以在存储模块中加入持久化功能。
SimpleKV与Redis的比较
内容总结
以上是互联网集市为您收集整理的Redis核心技术与实战:(一)基础架构全部内容,希望文章能够帮你解决Redis核心技术与实战:(一)基础架构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。