Redis介绍

Redis

1. Redis简介

Redis是一个由C语言编写的、开源的(GitHub地址)、基于Key-Value的非关系型内存数据库,由意大利人Salvatore Sanfilippo开发创造(下附帅照)。Redis虽基于内存但是也可持久化到硬盘,支持网络并且提供多种语言的API。更多关于Redis的介绍可移步Redis官网(https://redis.io/)。

“Redis之父”:Salvatore Sanfilippo

2. Redis与其他数据库的对比

与常见的关系数据库不同(如MySQL、SQLServer、Oracle),Redis属于NoSQL数据库即非关系数据库阵营,(而MongoDB则是介于非关系与关系数据库之间)。Redis不使用关系数据库中的表,它不会预定义或强制要求用户对Redis存储的不同数据进行关联。

Redis与memcached类似,都是用于存储键值映射,但支持更多的value类型。而且Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

以下引用《Redis实战》中的表格(片段)展示Redis与其他一些数据库的对比

名称 类型 数据存储选项 查询类型 附加功能
Redis 使用内存存储(in-memory)的非关系数据库 字符串、列表、集合、散列表、有序集合 每种数据类型都有自己的专属命令,另外还有批量操作(bulk operation)和不完全(partial)的事务支持 发布与订阅,主从复制(master/slave replication),持久化,脚本(存储过程,stored procedure)
memcached 使用内存存储的键值缓存 键值之间的映射 创建命令、读取命令、更新命令、删除命令及其他几个命令 以提升性能而设的多线程服务器
MySQL 关系数据库 每个数据库可以包含多个表,每个表可以包含多个行;可以处理多个表的视图(view);支持空间(spatial)和第三方扩展 SELECT、INSERT、UPDATE、DELETE、函数、存储过程等 支持ACID性质(需要使用InnoDB),主从复制和主主复制(master/master replication)
MongoDB 使用硬盘存储(on-disk)的非关系文档存储 每个数据库可以包含多个表,每个表可以包含多个无schema(schema-less)的BSON文档 创建命令、读取命令、更新命令、删除命令、条件查询命令等 支持map-reduce操作,主从复制,分片,空间索引(spatial index)

3. Redis适用场景

  1. 缓存。这应该是Redis最常用的使用场景,可以避免写入不必要的临时数据,也免去了对临时数据进行扫描和删除的麻烦,进而改善程序性能。

  2. 排行榜相关。Redis的SortedSet(有序集合)数据结构能够轻易的处理排序相关的计算,而使用关系型数据库的ASC、DESC代价要大些。

  3. 计数器/限速器。利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等,这类操作如果用MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个API的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力。

  4. 集合操作。利用set数据结构的一些命令,比如求交集、并集、差集等。可以方便搞定一些共同好友、共同爱好之类的功能。

  5. 简单消息队列,除了Redis自身的发布/订阅模式,我们也可以利用List来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦。

  6. Session共享,以PHP为例,默认Session是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登陆;采用Redis保存Session后,无论用户落在那台机器上都能够获取到对应的Session信息。

  7. 一些频繁被访问的数据,经常被访问的数据如果放在关系型数据库,每次查询的开销都会很大,而放在redis中,因为redis 是放在内存中的可以很高效的访问 。

此外,因为Redis将数据存储在内存中,而且发送给Redis的命令请求并不会经过典型的查询分析器(parser)或者查询优化器(optimizer)进行处理,所以对Redis存储的数据执行随机写的速度总是非常迅速的。

相关链接
Redis官网:(https://redis.io/)
Redis开源地址:(https://github.com/antirez/redis)
Redis中文网:(http://www.redis.cn/)

======返回目录======

>>> 下一篇:Redis的安装与配置说明

你可能感兴趣的:(Redis介绍)