最近几个月有自学了下Redis,闲了没事整理下笔记。
Redis数据库是一种key-value形式存储的NoSQL数据库,这类数据库主要有以下几种特点:非关系型的、分布式的、开源的、水平可扩展的。和Redis数据库同类型的还有Memcached.
同样为key-value形式存储的,在js中有json、在php中有array形式的数据,可以参考下。
Redis数据库的特点有:
(1)key-value形式存储
没有固定的表结构---->可扩展性,分布式----->可在多个服务器上加节点,迁移和维护方便,高可用性
(2)五大数据类型
Redis通常被称为数据结构服务器,因为其有五种相应的数据结构:string、hash、list、set、sorted list
string:
hash:
list:
set:
sorted list:
(3)数据存于内存中,周期性磁盘
与其他NoSQL数据库相比,Redis还是内存数据库。数据存于内存,性能高。基于安全性,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,类似于MySQL中的bin-log
(4)提供对简单事务的支持
只支持简单的事务,如果事务执行过程中出错,不提供回滚功能,由开发人员手动恢复原来的数据。
(5)支持多种语言
以新浪微博为例,大概有两种应用场景:1、应用程序直接访问Redis数据库 2、应用程序直接访问Redis数据库,Redis与MySQL集群进行即时同步,当Redis挂掉则直接访问MySQL
Redis适用场景:
1、取最新N个数据的操作
2、排行榜应用,取top N操作
3、需要精确设定过期时间的应用(可以设置过期时间)
4、计数器应用
5、Uniq操作,获取某段时间所有数据重排值
6、实时系统,反垃圾系统
7、Pub/Sub构建实时消息系统
8、构建队列系统
9、缓存
与MySQL和MongoDB对比,Redis不存在表结构也不存在字段,MongoDB有类似表结构的集合同样没有字段。