zoukankan      html  css  js  c++  java
  • Redis基础知识

    1.概述

    在Java Web开发中,使用数据库来进行数据的存储。

    高并发、大数据量

    例如:商品抢购的场景、主页访问量瞬间较大的情况,单一使用数据库来保存数据的系统会因为面向磁盘读/写速度比较慢的问题而存在性能弊端,数据库容易宕机。

    2.NoSQL技术 —— 基于内存的数据库,并且提供一定的持久化功能

    • Redis 支持每秒10w的读写操作、集群、分布式、主从同步等配置、支持一定的事务能力(保证了高并发场景下数据的安全和一致性)
    • MongoDB

    3.Redis在Java Web中的应用场景

    • 存储缓存用的数据

    • 需要高速读/写的场合使用它快速读/写

      • 读操作的次数远超写操作
      • 限于成本的原因,一般只使用Redis存储一些常用的和主要的数据
    • 需要考虑:

      • 业务数据常用吗?命中率如何?
      • 该业务是读操作多?还是写操作多?写操作多的没必要使用缓存
      • 业务数据大小如何
    “关于使用内存存储数据,我知道谷歌好像就是把所有互联网的数据都存储在内存条的,所以才会有如此高质量、高效的搜索,但它毕竟是谷歌……”
    

    高并发:天猫双11、抢红包、抢演唱会门票等

    如果使用数据库来进行处理,轻则造成用户体验极差用户量流失,重则数据库瘫痪,服务宕机。

    1. 当一个请求到达服务器时,只是把业务数据在 Redis 上进行读写,而没有对数据库进行任何的操作,这样就能大大提高读写的速度,从而满足高速响应的需求;
    2. 但是这些缓存的数据仍然需要持久化,也就是存入数据库之中,所以在一个请求操作完 Redis 的读/写之后,会去判断该高速读/写的业务是否结束,这个判断通常会在秒杀商品为0,红包金额为0时成立,如果不成立,则不会操作数据库;如果成立,则触发事件将 Redis 的缓存的数据以批量的形式一次性写入数据库,从而完成持久化的工作。

    4.在Java中使用Redis

    想要在Java中使用Redis缓存,需要添加相关的Jar包依赖,打开Maven仓库的网站,导入工程即可。

    Redis 只能支持六种数据类型(string/hash/list/set/zset/hyperloglog)的操作。

    5.在Spring中使用Redis

    6.结论

    • MySQL性能测试:每秒1000以下,还和引擎相关

    • Redis:10w请求不在话下

  • 相关阅读:
    ES6~Promise的原理及使用二 理解Promise规范(copy自:https://www.cnblogs.com/lvdabao/p/5320705.html?utm_source=tuicool&utm_medium=referral)
    Google的Python代码格式化工具YAPF详解
    在ubuntu上使用QQ的经历
    Ubuntu 14.04 下安装Skype
    pip install lxml mysql-python error
    情人节的宠物-测试小工具
    戴维营收集
    工作日志(10.29)
    求职面试
    面试题集(转载)
  • 原文地址:https://www.cnblogs.com/hider/p/11639422.html
Copyright © 2011-2022 走看看