【Redis】——概览

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013044029/article/details/78472534

前言

    小编在项目中经常用到Redis来对项目进行优化,现在来系统地学习一下。


简介    

     Redis最初由Salvatore Sanfilippo 创建,是一个开源软件,用c语言编写


     Redis是一个远程内存非关系数据库,不仅性能强劲,而且还具有复制特性已经为解决问题而生的独一无二的数据模。Redis提供了5种不同类型的数据结构,格式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库。除此之外,通过复制、持久化和客户端分片等特性,用户可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。


Redis与关系数据库的对比

      Redis是一个速度非常快的非关系数据库,它可一存储key和5种不同类型的value之间的mapping,可以讲存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。它不像MySQL关系数据库一样需要保存在磁盘上,在操作系统中,磁盘只是一个存储空间,而CPU处理数据是需要从内存中调用的,所以它们的读取操作可是不同级别上的概念,速度可是快很多的。


     在Redis里,用户可以直接使用原子的(atomic)INCR命令及其变种来计算聚合数据,并且应为Redis将数据存储在内存里面,而且发送给Redis的命令请求并不需要经过典型的查询分析期(parser)或者查询优化器(optimizer)进行处理,所以对Redis存储的数据执行随机写得速度总是非常迅速。


     使用Redis而不是关系数据库或者其他硬盘存储数据库,可以避免写入不必要的临时数据,也免去了临时数据进行扫描或者删除的满分,并最终改善程序的性能。Redis非关系或NoSQL:Redis不使用表,它的数据库也不会预定义或者强制去要求用户对Redis存储的不同数据进行关联。


Redis与memcached对比

     共同点:都可用于存储键值映射。


     不同点:Redis能够自动以不同的方式将数据写入硬盘,并且Redis除了能存储普通的字符串键之外,还可以存储其他4种数据结构,而memcached只能存储普通的字符串键。


     memcached用户只能用append命令将数据添加到已有字符串的末尾。Redis的list和set允许用户直接添加或删除元素。

Redis附件特性——持久化

    在使用类似Redis这样的内存数据库是,一个首先要考虑的问题就是“当服务器被关闭是,服务器存储的数据将何去何从?”Redis拥有两种不同形式的持久化方法,他们都可以用晓而紧凑的格式将存储在内存中的数据写入硬盘:第一种持久化方法为时间点转储(point-in-time-dump),转储操作既可以在“指定时间段内有指定数量的写操作执行”这一条件被满足是执行,又可以通过调用两条转储到硬盘(dump-to-disk)命令中的任何一条来执行;第二种持久化方法将所有修改了数据库的命令都写入一个只追加(appen-only)文件里面,用户可以根据数据的重要程度,将只追加写入设置为从不同步(sync)、每秒同步一次或者每写入一个命令就同步一次。



总结

     Redis可以用于解决更为广泛的问题,并且即可以用作主数据库使用,还可以作为其他存储系统的辅助数据库使用。使用redis,可以让代码变得更简短、更易懂、更加容易维护,而且代码的运行速度更快。它的效率和易用性比关系数据库要好得多。缺点:存储在内存,受限于内存存储设计;对内存空间的要求比较高,所以成本也比较高高。

猜你喜欢

转载自blog.csdn.net/u013044029/article/details/78472534
今日推荐