Redis(一)介绍

241 阅读3分钟

Redis 介绍

Redis

  • Redis 是用C语言开发的一个开源的高性能键值对( key-value )内存数据库,它是一种 NoSQL 数据库
  • 它是【单进程单线程】的内存数据库,所以说不存在线程安全问题
  • 它可以支持并发 10W QPS,所以说性能非常优秀。之所以单进程单线程性能还这么好,是因为底层采用了【IO多路复用(NIO思想)】
  • 相比Memcache这种专业缓存技术,它有更优秀的读写性能,及丰富的数据类型
  • 它提供了五种数据类型来存储【值】:字符串类型(string)、散列类型(hash)、列表类型(list)、集合类型(set)、有序集合类型(sortedset、zset)

Redis官网

NoSQL

  • NoSQL ,即 Not-Only SQL (不仅仅是 SQL ),泛指非关系型的数据库
  • 什么是关系型数据库?数据结构是一种有行有列的数据库
  • NoSQL 数据库是为了解决高并发、高可用、高可扩展、大数据存储问题而产生的数据库解决方案
  • NoSQL 可以作为关系型数据库的良好补充,但是不能替代关系型数据库

NoSQL数据库分类

  • 键值(Key-Value)存储数据库

    • 相关产品:Tokyo Cabinet/Tyrant 、 Redis 、 Voldemort 、 Berkeley DB
    • 典型应用:内容缓存,主要用于处理大量数据的高访问负载
    • 数据模型:一系列键值对
    • 优势: 快速查询
    • 劣势:存储的数据缺少结构化
  • 列存储数据库

    • 相关产品: Cassandra , HBase , Riak
    • 典型应用:分布式的文件系统
    • 数据模型:以列簇式存储,将同一列数据存在一起
    • 优势:查找速度快,可扩展性强,更容易进行分布式扩展
    • 劣势:功能相对局限
  • 文档型数据库

    • 相关产品: CouchDB 、 MongoDB
    • 典型应用: Web 应用(与 Key-Value 类似, Value 是结构化的)
    • 数据模型: 一系列键值对
    • 优势:数据结构要求不严格
    • 劣势:
  • 图形( Graph )数据库

    • 相关数据库: Neo4J 、 InfoGrid 、 Infinite Graph
    • 典型应用:社交网络
    • 数据模型:图结构
    • 优势:利用图结构相关算法
    • 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案

Redis发展历史

2008年,意大利的一家创业公司 Merzia 推出了一款基于 MySQL 的网站实时统计系统 LLOOGG ,然而没过多久该公司的创始人 Salvatore Sanfilippo 便 对 MySQL 的性能感到失望,于是他决定亲自为 LLOOGG 量身定做一个数据库,并于2009年开发完成,这个数据库就是 Redis

不过 Salvatore Sanfilippo 并不满足只将 Redis 用于 LLOOGG 这一款产品,而是希望更多的人使用它,于是在同一年 Salvatore Sanfilippo 将 Redis 开源发布,并开始和 Redis 的另一名主要的代码贡献者 Pieter Noordhuis 一起继续着 Redis 的开发,直到今天

Salvatore Sanfilippo 自己也没有想到,短短的几年时间, Redis 就拥有了庞大的用户群体。 Hacker News 在2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、街旁网、知乎 网,国外如 GitHub 、 Stack Overflow 、 Flickr 等都是 Redis 的用户、

VMware 公司从2010年开始赞助 Redis 的开发, Salvatore Sanfilippo 和 Pieter Noordhuis 也分别在3月和5 月加入 VMware ,全职开发 Redis

Redis应用场景

  • 内存数据库(登录信息、购物车信息、用户浏览记录等)
  • 缓存服务器(商品数据、广告数据等等)(最多使用)
  • 解决分布式集群架构中的 session 分离问题( session 共享)
  • 任务队列(秒杀、抢购、12306等等)
  • 分布式锁的实现
  • 支持发布订阅的消息模式
  • 应用排行榜(有序集合)
  • 网站访问统计
  • 数据过期处理(可以精确到毫秒)