zoukankan      html  css  js  c++  java
  • Redis(序)应用场景

    前言

    在阅读了《大型网站技术架构:核心原理与案例分析》书后,稍微了解了Redis在大型网站架构中的应用场景和目的。

    大型网站都是从小用户量,小流量的网站演变过来的,在小型网站的架构之初,Linux+Apache+PHP+Mysql即可实现。但是随着用户量持续增长,在LAPM架构中一个非常关键的点限制了网站性能:Mysql数据库

    • 在大用户量、大并发的场景中,Mysql数据库的磁盘I/O,多线程并发过程中表锁行锁都都极大程度上限制了网站的响应、吞吐量;
    • 对一些热点数据反复的查询造成不必要的磁盘I/O;

    这些都降低了网站性能,增加了网站响应延迟、降低吞吐量。

    因为这些问题的存在,内存读写/缓存势在必行。数据在内存,减少/避免磁盘IO。从而出现分布式缓存解决以上问题。

    应用场景

    Redis的应用场景诸多,这里也是总结工作中的应用和收集网友分享的内容。

    • 分布式缓存:Redis采用client-server的模式,所以对于分布式/集群环境中作为独立的cache server是个不错的选择;

    • NoSql数据库:在很多特殊场景中,关系型数据库并不非常适合表达业务模型时,Redis也是不错的选择;

    以上两点是Redis的大方向上的应用!但是由于Redis提供的特性,它还支持其他的非常多的应用场景:

    • 作为全局队列:Redis提供了List列表的数据类型,先进先出。比如任务调度;

    • 应用在生产消费者模式或者发布订阅模式:Redis提供了List列表的数据类型,阻塞式读。Redis同时也提供了Pub/Sub支持;

    • 排行榜/评论排序:Redis提供了Sorted Set有序集合,可以应用在数据排序上;

    • 最新文章/评论:Redis提供了List列表的数据类型,且支持对List进行范围操作;

    • 用户登录状态:Redis有Bitmap可以存储关联一个对象事物的是否状态:0/1。如果用户ID是自增长,可以作为Bitmap的下标,是否登录用0/1表示。

    • 分布式Session:上面说了Redis可以作为分布式缓存,可以存储分布式Session。

    • 分布式锁:因为Redis的client-server模式和单线程特性,对于key的操作可以作为全局的唯一识别;

    Redis还有很多应用场景,这里先暂时总结如此,后面发现更多的神级使用方式时,再继续更新。

  • 相关阅读:
    (转)样本方差的期望
    (转)Python 字典排序
    曝光补偿
    python判断字符串是否包含子字符串
    python requests接口测试 -----博客园串接口
    jmeter+ant+jenkins 搭建接口自动化测试
    TOMCAT闪退。cmd执行startup.bat保错:the CATALINA_HOME environment variable is not defined correctly
    selenium python自动化测试 ddt数据驱动
    jenkins到底如何拉取代码 如何部署的
    git 常用命令
  • 原文地址:https://www.cnblogs.com/lxyit/p/9491572.html
Copyright © 2011-2022 走看看