Redis,是个什么呢?

应一个朋友的邀请,接下来笔者将陆续推出Redis系列学习笔记,顺便巩固一下自己的redis知识。我相信,熟悉nosql的童鞋对Redis一定不陌生,也许你的项目中正在使用它,比如缓存、消息队列等。

Redis官网(https://redis.io )是这样介绍的:

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.

Redis是一个开源内存型数据结构存储系统。可以用来作为数据库、缓存、消息中间件。开源就不用说了,内存型说明其速度快,数据结构存储说明它是可以数据存储。

特性

速度快,使用标准C写的,所有操作都在内存中完成。

持久化,虽然redis数据库完全保存在内存中,但可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

丰富的数据类型,Redis不仅仅支持Key-Value键值对类型的数据,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 等数据结构。

原子性, 熟悉关系型数据库事务的童鞋就知道,也就是说一个操作或多个操作,要么完全执行成功,要么完全不执行。

主从复制,(能自动重连和网络断开时自动重新同步),并且第一次同步是快速的非阻塞式的同步。

与Memcache

很多人都说Redis是Memcache的增强版。

之前一直纠结,到底使用Redis,还是使用Memcache?

如果是只是用来做缓存,用Memcache就够了。

如果想要数据持久化,支持 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 等数据结构,做队列之类的应用,就用redis吧。

Memcache不支持持久化,也就是断电或重启,缓存的数据就没有了。

与MongoDB

同为Nosql,二者的应用的场景却大不相同,Mongo更类似于关系型数据库,例如mysql,同样支持索引、游标操作,查询功能非常强大,尤其是查询JSON数据,存储海量数据,遗憾的是它并不支持事务。

关系型数据库在处理海量数据时,性能会明显下降,MongoDB可作为关系数据库的一种替代。

要说黄金搭档?

NodeJs + MongoDB 正如 PHP + Mysql ?

应用场景

1、显示最新的项目列表

2、删除与过滤

3、排行榜相关

4、按照用户投票和时间排序

5、处理过期项目

6、计数

7、特定时间内的特定项目

8、实时分析正在发生的情况,用于数据统计与防止垃圾邮件等

9、Pub/Sub

10、队列

11、缓存

Redis能干啥?细看11种Web应用场景:

11 Common Web Use Cases Solved In Redis