Redis 的介绍、优缺点、使用场景

Redis是什么: 开源的,基于键值的存储服务系统,支持多种数据类型,性能高,功能丰富

特性(主要有8个特性):

  • 速度快:官方给出的结果是10W OPS,每秒10W的读写(为什么是10W,因为内存的相应时间是100纳秒-10万分之一秒)。数据存储在内存中;使用C语言开发;Redis使用单线程,减少上下文切换。本质原因是计算机存储介质的速度,内存比硬盘优几个数量级)。MemoryCache可以使用多核,性能上优于Redis。

  • 持久化:Redis所有的数据保持在内存中,对数据的更新将异步地保存到磁盘上。断掉,宕机? RDB快照/AOF日志模式来确保。MemoryCache不提供持久化

  • 多种数据结构:Redis提供字符串,HashTable, 链表,集合,有序集合;另外新版本的redis提供BitMaps位图,HyperLogLog超小内存唯一值计数,GEORedis3.2提供的地理位置定位。相比memocache只提供字符串的key-value结构

  • 支持多种编程语言:Java,PHP,Ruby,Lua,Node

  • 功能丰富: 发布订阅,支持Lua脚本,支持简单事务,支持pipline来提高客户端的并发效率

  • 简单:单机核心代码23000行,让开发者容易吃透和定制化;不依赖外部库;单线程模型

  • 主从复制:主服务器的数据可以同步到从服务器上,为高可用提供可能

  • 高可用、分布式:2.8版本后提供Redis-Sentinel支持高可用;3.0版本支持分布式

典型应用场景:

  • 缓存系统:缓存一些数据减少对数据库的访问,提高响应速度

  • 计数器:类似微博的转发数,评论数,incr/decr的操作是原子性的不会出错

  • 消息队列系统:发布订阅的模型,消息队列不是很强

  • 排行榜: 提供的有序集合能提供排行版的功能,例如粉丝数,关注数

  • 实时系统:利用位图实现布隆过滤器,秒杀等

最后更新于

这有帮助吗?