redis介绍

简介

redis作为内存数据库,最大的特点就是“快!”官网:www.redis.io 中文:www.redis.cn

引出redis

datapage(数据页)就是把文件切割、分散,存的就是table表中的一部分数据,大小4k,一堆dp,放磁盘

index(索引),相当于是把datapage的一部分拿出来存,如name:sxt、mike等,大小也是4k,也是一堆index,和dp之间有id来指向,索引,快速的能够查到在dp中的数据,放磁盘上(就像字典一样,根据拼音、部首,来查询到某个字的具体位置)。虽然索引这么好用,但是不能给所有字段都建立索引,否则索引建立的就没有意义了。

当Client想查“husky”,在索引页中找到了dp的映射,于是就能快速找到。但是我怎么知道“husky”在index的哪个上面?所以索引页也得排序。于是就需要引入另一只手来维护这个规律、排序,就是B+结构,在内存创建。B+只是一个轻量级的维护结构,只是索引的指向,不存具体数据。

一旦数据量大了,内存和磁盘交互IO,这就没辙了。想要提升速度,一次性把数据、索引都扔进内存就可以了。这就是HANA,不过redis还没有这么6 。redis就是穷人版的HANA,但是能解决实际问题。redis不能all in memory,但是能达到相同的目的。那就是采用session过期机制!

redis优点:

1.(快)开源的(BSD协议),使用ANSI C 编写,基于内存的且支持持久化,高性能的Key-Value的NoSQL数据库
2.单线程运行,省去了线程上下文切换带来的性能开销,效率更高
3.支持数据结构类型丰富,有 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) , 位图( bitmaps ), hyperloglogs 和 地理空间(geospatial) 索引半径查询。
4.支持众多主流语言的客户端,C、C++、Python、Erlang、R、C#、Java、PHP、Objective-C、Perl、Ruby、Scala、Go、JavaScript

redis用途:

缓存(StackOverFlow)、数据库(微博)、消息中间件(微博)

nosql分类:

memcached只支持字符串,redis支持类型丰富
redis介绍_第1张图片

你可能感兴趣的:(Redis)