概述
一.redis的使用场景
redis经常被用于缓存,秒杀,分布式锁等场景的重要基础
PUT/GET/DELETE/SCAN是一个键值数据库的基本操作集合。
PUT: 新写入或更新一个key-value对;
GET: 根据一个key读取相应的value值;
DELETE:根据一个key删除整个key-value对;
SCAN:查询一个用户在一段时间内的访问记录。根据一段key的范围返回相应的value值。
二.键值数据库的设计架构
一个键值数据库包括了访问框架,索引模块,操作模块和存储模块四个部分
访问模式通常有两种:
一种是通过函数库调用的方式供外部应用使用,比如libsimplekv.so,以动态链接库的形式链接到自己的程序中,提供键值存储功能;
另一种通过网络框架以Socket通信的形式对外提供键值对操作,这种形式可以提供广泛的键值存储服务。
三.如何定位键值对的位置?
当SimpleKV解析客户端发来的请求,此时需要找到所操作键值对是否存在,这依赖于键值数据库的索引模块。索引的作用是让键值数据库根据key找到相应value的存储位置,进而执行操作。
索引的类型有很多,常见的有哈希表,B+树,字典树等,不同的索引结构在性能,空间消耗,并发控制等方面具有不同的特征。
memcached和redis采用哈希表作为key-value索引,而RocksDB采用跳表作为key-value的索引
redis采用哈希表作为索引,很大一部分原因是其键值数据基本都是保存在内存中的,而内存的高性能随机访问特性可以与哈希表O(1)的操作复杂度相匹配。
四.从 SimpleKV 演进到 Redis
SimpleKV和Redis的对比:
【数据结构】缺乏广泛的数据结构支持:比如支持范围查询的skip等数据结构
【高可用】缺乏哨兵和主从模式
【横向扩展】缺乏集群和分片功能
【内存安全性】缺乏内存过载时key淘汰算法支持
【内存利用率】没有充分对数据结构优化提高内存利用率,例如使用压缩性的数据结构
【事务性】无法保证多个操作的原子性
最后
以上就是高挑柚子为你收集整理的Redis核心技术与实战-学习笔记(一)的全部内容,希望文章能够帮你解决Redis核心技术与实战-学习笔记(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复