Redis基础(一)——简介 | 8月更文挑战

一、Redis简介

Redis( Remote Dictionary Server ) 是彻底开源免费的,遵照BSD协议,是一个高性能(NOSQL)的 key-value 数据库;Redis 是一个开源的使用 ANSI C语言编写、支持网络、可基于内存亦可持久化的日志类型、Key-Value数据库web

NoSQL介绍

​ NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了不少难以克服的问题,而非关系型的数据库则因为其自己的特色获得了很是迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤为是大数据应用难题。redis

NoSQL数据库的四大分类

  • 键值(Key-Value)存储数据库
    • 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来讲的优点在于简单、易部署。可是若是DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。[3] 举例如:Tokyo Cabinet/Tyrant, Redis,Voldemort, Oracle BDB.
  • 列存储数据库
    • 这部分数据库一般是用来应对分布式存储的海量数据。键仍然存在,可是它们的特色是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
  • 文档型数据库
    • 文档型数据库的灵感是来自于Lotus Notes办公软件的,并且它同第一种键值存储相相似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,好比JSON。文档型数据库可 以看做是键值数据库的升级版,容许之间嵌套键值。并且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
  • 图形(Graph)数据库
    • 图形结构的数据库同其余行列以及刚性结构的SQL数据库不一样,它是使用灵活的图形模型,而且可以扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),所以进行数据库查询须要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。[2] 如:Neo4J,InfoGrid, Infinite Graph.

所以,咱们总结NoSQL数据库在如下的这几种状况下比较适用:数据库

一、数据模型比较简单;服务器

二、须要灵活性更强的IT系统;markdown

三、对数据库性能要求较高;网络

四、不须要高度的数据一致性;数据结构

五、对于给定key,比较容易映射复杂值的环境。多线程

Redis的特色

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持的类型 String(字符串), List(列表), Hash(哈希), Set(集合) 及 Ordered Set(zset,有序集合)数据类型操做。
  • 原子 – Redis的全部操做都是原子性的,意思就是要么成功执行要么失败彻底不执行。单个操做是原子性的。多个操做也支持事务,即原子性,经过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过时等等特性。

优势:

  1. 丰富的数据结构
  2. 高速读写, redis 使用本身实现的分离器, 代码量很短, 没有使用 lock(MySQL),所以效率很是高。

缺点:

  1. 持久化。Redis直接将数据存储到内存中,要将数据保存到磁盘上,Redis可使用两种方式实现持久化过程。第一种方式:定时快照(snapshot):每隔一段时间将整个数据库写到磁盘上,每次均是写所有数据,代价很是高。并发

    第二种方式:基于语句追加(aof):只追踪变化的数据,可是追加的log可能过大,同时全部的操做均从新执行一遍,回复速度慢。分布式

  2. 耗内存,占用内存太高。

应用场景:

一、发布订阅系统;

二、地图信息系统;

三、计时器、计数器;(浏览量、点击率)

Redis 是单线程的!(6.0版本后支持多线程)

Redis是基于内存操做,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽。

相关文章
相关标签/搜索