zoukankan      html  css  js  c++  java
  • Redis学习笔记(一)

    一、Redis定义

    Redis是一个开源的,基于内存的数据结构存储,可用于数据库、缓存、消息中间件。

    1.1 为什么要用Redis?

    Redis是基于内存的,常用作缓存的一种技术,并且Redis存储的方式是以key-value的形式。

    我们发现这不就是Java的Map容器所拥有的特性吗,为什么还需要Redis呢?

    • Java实现的Map是本地缓存,如果有多台实例(机器)的话,每个实例都需要各自保存一份缓存,缓存不具有一致性;
    • Redis实现的是分布式(CAP/一致性/可达性/分区容错性)缓存,如果有多台实例(机器)的话,每个实例都共享一份缓存,缓存具有一致性。Redis可以独立部署,这样网站代码更新后redis缓存的数据还在,本地内存每次网站更新都会释放掉数据;存到redis,多个项目间可以共享缓存数据,如果是本地内存是无法跨项目共享的。
    • Java实现的Map不是专业做缓存的,JVM内存太大容易挂掉的。一般用做容器来存储临时数据,缓存的数据随着JVM销毁而结束。Map所存储的数据结构,缓存过期机制等等是需要程序员自己手写的;
    • Redis是专业做缓存的,可以用几十个G内存来做缓存。Redis一般用作缓存,可以将缓存数据保存在硬盘中,Redis重启后可将其恢复。原生提供丰富的数据结构、缓存过期机制等简答好用的功能。

    总结:Redis分布式缓存,具有一致性、专业做缓存(具有各种简单好用的功能)

    【参考】为什么要用redis而不用map做缓存?https://segmentfault.com/q/1010000009106416

    1.2 为什么要用缓存?

    如果我们的网站出现了性能问题(访问时间慢),按经验来说,一般是由于数据库撑不住了。因为一般数据库的读写都是要经过磁盘的,而磁盘的速度可以说是相当慢的(相对内存来说)

    https://zhuanlan.zhihu.com/p/24726196

    如果学过MyBatis、Hibernate的同学就可以知道,它们有一级缓存、二级缓存这样的功能(终究来说还是本地缓存)。目的就是为了:不用每次读取的时候,都要查一次数据库。

    有了缓存之后,我们的访问就变成这样:

  • 相关阅读:
    IIS7.5应用程序池集成模式和经典模式的区别【转】
    Qt keyPressEvent keyReleaseEvent 分析
    cesium编程中级(二)源码编译
    cesium编程中级(一)添加示例到Sandcastle
    cesium编程中级开篇
    cesium编程入门(九)实体 Entity
    cesium编程入门(八)设置材质
    QPushButton 点击信号分析
    cesium编程入门(七)3D Tiles,模型旋转
    cesium编程入门(六)添加 3D Tiles,并调整位置,贴地
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10449487.html
Copyright © 2011-2022 走看看