我是靠谱客的博主 高挑柚子,最近开发中收集的这篇文章主要介绍Redis核心技术与实战-学习笔记(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.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核心技术与实战-学习笔记(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部