Redis简介
Redis 是一个非常快速的非关系内存型数据库。Redis非常有区分度的是它提供的5种不同类型的数据结构,其数据结构是有针对地为解决问题而生的数据结构,区分于其他数据库的一个显著特点。可以说,Redis核心问题和功能都围绕着五种数据结构展开的,另外,它方便的扩展功能,可以支持到数百GB级数据。
与其他数据库和软件的对比
Redis的特点决定了它在存储工具里的定位,它经常被用来与其他数据库进行对比。这里,我们介于内存键值存储 Memcached 与MongoDB对Redis进行一次比较。
名称 | 类型 | 存储 | 查询 | 附加功能
— |— | — | — | — | —
Redis | 内存存储(in-memmory)的非关系数据库 | 字符串,列表,集合,散列表,有序集合 | 每种数据类型都有自己的专属命令,还有批操作和不完整的事务支持|发布与订阅,主从复制,持久化,脚本
Memcached | 使用内存存储的键值缓存|键值之间的映射|创建,读取,更新删除等命令|多线程服务支持
MongoDB |硬盘存储的非关系文档存储|每个数据库可以包含多个个表,每个表包含多个schema 的BSON文档|更新,读取,删除,条件查询等命令|支持map-reduce操作,主从复制,分片,空间索引(spatial index)|
使用Redis的理由
Redis之于缓存界:使用memcached 时,没有原生的列表结构,只能用Append命令将数据添加到已有字符串末尾。可以认为那个字符串就是一个列表。但是删除这些就比较困难了。memcached采用的办法是通过黑名单来隐藏列表里的元素,从而避免对元素进行读取,更新,写入。相反地,Redis的LIST和SET允许用户直接添加或者删除元素。
Redis之于数据库:当数据库用于存储长期数据报告,报表。并将这些数据作为固定时间范围内聚合。数据库的做法是:将各个行插入一个报表中,通过扫描这些行进行聚合数据。这样就要频繁地对表里数据进行
读,写。Redis可以使用原子的INCR命令来进行聚合计算。并且Redis存储在内存里。并且查询不通过数据库的分析器,查询优化器等,所以对Redis存储的数据行随机写的速度是非常迅速的。
Redis之于NoSql数据库:避免写入不必要的临时数据。免去了临时数据进行扫描删除的麻烦。可以改上程序的性能。