Redis
高性能Key-Value服务器
多种数据结构
丰富的功能
高可用分布式支持
Redis初识
- 由Salvatore Sanfilippo(antirez)制作,目前服务于以色列RedisLabs,早期代码23000行,采用key-value的字典结构,GitHub、twitter、StackOverflow、阿里巴巴、百度、微博、美团、搜狐等都在使用Redis这样的技术,如今Redis已经成为必备技能。
- 典型使用场景
- 缓存系统:用户访问App server,App Server从cache(Redis)请求数据,如果有,直接返回给App Server,如果没有,cache将从Storage(持久化存储空间)中查找,查找后将从Storage中查找到的数据存入cache中以方便下次查找,而后直接由Storage返回给App Server。
- 计数器:微博、视频网站的转发、评论数。
- 消息队列系统
- 排行榜
- 社交网络
- 实时系统
- 典型使用场景
开源
基于键值的存储服务系统
支持多种数据结构
性能高,功能丰富
Redis特性
速度快(10W OPS(读写))
- 将数据存在内存
- 用c语言编写
- 线性模型使用单线程
持久化(断电不丢数据)
Redis所有数据保持在内存中,对数据的更新将异步地保存到硬盘上
多种数据结构
- 常规
- 字符串(Strings/Blobs/Bitmaps)
- 哈希(Hash Tables(objects!))
- 列表(Linked Lists)
- 集合(Sets)
- 有序集合(Sorted Sets)
- 衍生
- 位图(BitMaps)
- 超小内存唯一值技术(HyperLogLog——有一定误差)
- 地理信息定位(GEO)
支持多种编辑语言
- Java
- php
- Python
- Ruby
- Lua
- NodeJs
功能丰富
- 发布订阅
- Lua脚本
- 事务
- pipeline
简单
- 23000行代码
- 不依赖外部库(like libevent)
- 单线程模型(开发相对容易)
主从复制
在Redis中主服务器的数据可以同步到从服务器上,为高可用以及分布式提供一个很好的基础
高可用、分布式
高可用 ——> Redis-Sentinel(v2.8)支持高可用
分布式 ——> Redis-Cluster(V3.0)支持分布式