1、定义
- Redis(Remote Dictionary Server),即远程字典服务,是一个开源的、内存中的数据结构存储系统。
- redis是一个key-value存储系统。
- 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
- 为了保证效率,redis数据都是缓存在内存中。
- redis可以用作数据库、缓存和消息中间件。
- Redis使用ANSI C语言编写,支持网络,并提供了多种语言的API。
2、截至今天数据库排名
3、主要特点
- 高性能:
- Redis基于内存操作,因此读写速度非常快。
- 官方测试数据表明,在100k个并发连接下,Redis的读取速度为110000次/s,写入速度为81000次/s(可能根据测试环境和版本有所不同)。
- 支持多种数据结构:
- Redis不仅支持简单的字符串类型的数据,还支持列表(list)、集合(set)、散列(hash)和有序集合(sorted set)等多种数据类型。
- 这些数据类型都支持push/pop、add/remove及取交集、并集和差集等丰富的操作,且这些操作都是原子性的。
- 数据持久化:Redis提供了RDB和AOF两种持久化方式,可以将内存中的数据保存到磁盘中,以防止数据丢失。
- 主从复制:
- Redis支持主从复制,可以实现数据的备份和读写分离。
- 一个主服务器可以有多个从服务器,从服务器可以复制主服务器的数据。
- 事务支持:Redis支持事务,即一组命令的执行是一个原子操作,在事务中的命令要么全部执行,要么全部不执行。
- 发布/订阅功能:Redis提供了发布/订阅功能,可以实现消息的发布和订阅,满足实时消息推送的需求。
- Lua脚本支持:Redis支持使用Lua脚本来执行复杂的逻辑,这可以提高处理效率。
- 简单易用:
- Redis提供了简单的API,使得开发者可以快速上手。
- 支持多种语言,包括Java、C/C++、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等。
3、主要用途
- 缓存:配合关系型数据库做高速缓存
- 计数器:进行自增自减运算
- 时效性数据:利用expire过期,例如手机验证码功能
- 海量数据统计:利用位图,存储用户是否是会员、日活统计、文章已读统计、是否参加过某次活动
- 会话缓存:使用redis统一存储多台服务器用到的session信息
- 分布式队列/阻塞队列:通过List双向链表实现读取和阻塞队列
- 分布式锁: 使用redis自带setnx命令实现分布式锁
- 热点数据存储:最新文章、最新评论,可以使用redis的list存储,ltrim取出热点数据,删除旧数据
- 社交系统:通过Set功能实现,交集、并集实现获取共同好友,差集实现好友推荐,文章推荐
- 排行榜:利用sorted-set的有序性,实现排行榜功能,取top n
- 延迟队列:利用消费者和生产者模式实现延迟队列
- 去重复数据:利用Set集合,去除大量重复数据 发布/订阅消息:pub/sub模式