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应用场景: