Redis初识

Redis


高性能Key-Value服务器

多种数据结构

丰富的功能

高可用分布式支持


Redis初识

  • 由Salvatore Sanfilippo(antirez)制作,目前服务于以色列RedisLabs,早期代码23000行,采用key-value的字典结构,GitHub、twitter、StackOverflow、阿里巴巴、百度、微博、美团、搜狐等都在使用Redis这样的技术,如今Redis已经成为必备技能。
    • 典型使用场景
      1. 缓存系统:用户访问App server,App Server从cache(Redis)请求数据,如果有,直接返回给App Server,如果没有,cache将从Storage(持久化存储空间)中查找,查找后将从Storage中查找到的数据存入cache中以方便下次查找,而后直接由Storage返回给App Server。
      2. 计数器:微博、视频网站的转发、评论数。
      3. 消息队列系统
      4. 排行榜
      5. 社交网络
      6. 实时系统

开源
基于键值的存储服务系统
支持多种数据结构
性能高,功能丰富


Redis特性


速度快(10W OPS(读写))

  1. 将数据存在内存
  2. 用c语言编写
  3. 线性模型使用单线程

持久化(断电不丢数据)

Redis所有数据保持在内存中,对数据的更新将异步地保存到硬盘上


多种数据结构

  • 常规
  1. 字符串(Strings/Blobs/Bitmaps)
  2. 哈希(Hash Tables(objects!))
  3. 列表(Linked Lists)
  4. 集合(Sets)
  5. 有序集合(Sorted Sets)
  • 衍生
  1. 位图(BitMaps)
  2. 超小内存唯一值技术(HyperLogLog——有一定误差)
  3. 地理信息定位(GEO)

支持多种编辑语言

  1. Java
  2. php
  3. Python
  4. Ruby
  5. Lua
  6. NodeJs

功能丰富

  1. 发布订阅
  2. Lua脚本
  3. 事务
  4. pipeline

简单

  1. 23000行代码
  2. 不依赖外部库(like libevent)
  3. 单线程模型(开发相对容易)

主从复制

在Redis中主服务器的数据可以同步到从服务器上,为高可用以及分布式提供一个很好的基础


高可用、分布式

高可用 ——> Redis-Sentinel(v2.8)支持高可用
分布式 ——> Redis-Cluster(V3.0)支持分布式