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请求不在话下

原文地址:https://www.cnblogs.com/hider/p/11639422.html