Redis 教程

最近在看数据库相关的东西,正好看到 Redis 挺有意思。记录一下。

1、SQL and NoSQL

目前使用我接触最多的是关系型数据库,一般使用 SQL 来指代。NoSQL = not only sql,指非关系型数据库。

常见的关系型数据库有:MySQL、Oracle、SQL server、PostgreSQL 等。

常见的非关系型数据库有:Redis、MongoDB、HBase 等。

关系型数据库都使用二维表格模型来表示,但是非关系型数据库则有很多不同:

NoSQL 数据库分类:

  • KV 键值对 临时性键值存储:Memcached,Redis 永久性键值存储:ROMA,Redis 应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等 数据模型:Key 指向 Value 的键值对,通常用 HashTable 来实现
    • 优点:查找速度快
    • 缺点:数据无结构化,通常只被当做字符串或者是二进制数据
  • 面向文档的数据库:MongoDB,CouchDB Mongodb 是一个基于分布式文件存储的数据库,由 c++语言编写。 为 web 应用提供可扩展的高性能数据存储解决方案,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据中功能最丰富,最像关系数据库的 应用场景:WEB 应用(与 key-value 类似,value 是结构化的,不同的是数据库能够了解到 value 的内容) 数据模型:Key-Value 对应的键值对,Value 是结构化的数据
    • 优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
    • 缺点:查询性能不高,而且缺乏统一的查询语法
  • 面向列的数据库:Cassandra,HBase 应用场景:分布式的文件系统 数据模型:以列簇式存储,将一列数据存储在一起
    • 优点:查找速度快,可扩展性强,更容易进行分布式扩展
    • 缺点:功能相对局限
  • 面向图形的数据库:Neo4J,InfoGrid 应用场景:社交网络,推荐系统等,专注于构建关系图谱 数据模型:图结构
    • 优点:利用图结构相关算法。比如最短路径寻址,N 度关系查找等等。
    • 缺点:很多时候要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

2、Redis 简介

Redis 是一个开源的、基于内存的数据结构存储,可用作数据库、缓存或者消息中间件。

它支持:strings、hashes、lists、sets、sorted sets with range queries、bitmaps、hyperloglogs、geospatial indexes with radius queries and streams 等数据结构。