Redis系列(一)—— 概述

申明

本文首发自架构小站,转载请注明。

什么是Redis

Redis是开源(BSD许可)的KV内存存储服务器,可以用作数据库、缓存、消息中间件等。它支持多种数据结构,包括字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)、位图(bitmaps)、对象计数器(hyperloglogs)、地理空间索引(geospatial indexes)。Redis内置了复制(replication)、Lua脚本、LRU驱动时间、事务(transacations)和不同级别的磁盘持久化(persistence),并通过Redis哨兵(sentinel)和集群(cluster)保证高可用(hign availability)。

Redis应用场景

数据库

使用Redis代替传统的关系型数据库入mysql、mariadb直接作为数据最终仓库,适合产品初期数据量少,或者长期(如三年)数据量可控的场景。好处是读写速度杠杠的,再也不需要缓存啦,同时也降低了系统复杂性,简单的总是最好的。坏处是资源消耗(主要是内存)太大,成本高,同时Redis的异步持久化可能带来数据丢失的风险。

缓存

这是Redis最广泛的应用,多数场景下取代了老牌缓存Memcached。缓存的作用是加速数据访问,Redis的数据放在内存中,内存IO比磁盘IO大概高1-2个数量级,性能提升非常可观。另外,由于缓存的引入,数据库压力大大降低,减少了高峰时期系统宕机的风险,而且作为缓存,异步持久化可能带来的数据丢失也可以接受。缺点是引入了额外的复杂性,Redis失效会造成数据库击穿,压垮数据库。

消息中间件

这应该算是Redis的一种非主流应用了,主要有两种使用形式: (1) 基于Redis的Pub/Sub子系统,发布订阅模式,每个频道支持多个订阅者 (2) 基于Redis列表(lists)数据结构,利用lpush发送消息,rpop消费消息,或者使用它们的阻塞版本,减少轮询压力 由于有专门的消息中间件,所以Redis的这种应用并不多,Redis之父基于Redis实现了独立的消息中间件Disque,有兴趣的可以搜索github

Redis学习资源

1、当然是架构小站啦,近期会着力更新Redis相关文章,包括Redis基本数据类型,协议、客户端、历史、运维、高可用、扩展以及源码分析相关的文章,欢迎关注

2、Redis官网:redis.io,这个不用多说,从Redis的安装、命令大全、实现原理到客户端都有介绍,建议大家先通读一遍,大有裨益

3、Redis源码,学习Redis的源码涉及了大量数据结构,网络服务器以及c语言模块化和类面向对象化的知识,对linux c程序设计有很大帮助。小件之后会更新数篇这方面的文章和大家一起学习

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,366评论 25 709
  • 概念 Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value内存数据库,...
    jiangmo阅读 653评论 0 3
  • 朋友又莫名奇妙地生气了。 我和阿兜在生活区门口看到她,叫她不理,在操场遇见,撕破了嗓子喊,还是漠视。 我猜大概是因...
    芷凡lili阅读 261评论 0 0
  • 《敏捷主义 :从技术、商业和个人视角看敏捷商业思维》读书笔记(2017-03) 1、接受变化,改变自己 提到敏捷研...
    兔龙象阅读 1,006评论 0 3
  • 又快过年了。 春节是中国最传统和最盛大的节日,人们辞旧迎新,带着美好的希望,走入新的一年。 街道上,早早显露出年的...
    与风相伴阅读 125评论 0 0