文章目录

  • 什么是缓存?
    • 缓存 VS 数据库
  • 本地缓存 VS 分布式缓存
    • 本地缓存
    • 分布式缓存
  • Memcached VS Redis

什么是缓存?

缓存是⼀个高速数据交换的存储器,使用它可以快速的访问和操作数据。

举个通俗的例子。
小明经营着一家饭店,在刚开张的时候由于名气不足,客源少,生意并不是很忙,平时没事的时候就闲着,有客人来了再进厨房安排做菜。随着饭店的日益发展,此时的饭店已经不同往日,有着大量的稳定客源,并且在某些节假日的时候甚至爆满。按照以前的做法,那肯定是行不通了,在用餐高峰期的时候因为备餐慢导致了客户的长时间等待,使得饭店的屡遭投诉。
为解决这一问题,小明想到了一个办法,可以在空闲的时候,提前将热门的菜做完后放入保温柜,等用餐高峰期时再拿出来加热后就可以直接上菜,就规避了短时间内大量客源而导致的备餐慢的问题,通过这一方法,即使在高峰期,也能很好的应对。

这就是缓存的本质,将热点资源(高频读、低频写)提前放入离用户最近、访问速度更快的地方,以提高访问速度。


缓存 VS 数据库

相比于数据库而言,缓存的操作性能更高

  1. 缓存⼀般都是通过 key-value 查询数据,因为不像数据库⼀样还有查询的条件等因素,所以查询的性能⼀般会比数据库高;
  2. 缓存的数据是存储在内存中的,而数据库的数据是存储在磁盘中的,因为内存的操作性能远远大于磁盘,因此缓存的查询效率会高很多;
  3. 缓存更容易做分布式部署(当⼀台服务器变成多台相连的服务器集群),而数据库⼀般比较难实现分布式部署,因此缓存的负载和性能更容易平行扩展和增加。

本地缓存 VS 分布式缓存

根据缓存是否与应用进程属于同一进程(单机与多机),又分为本地缓存和分布式缓存

本地缓存

本地缓存也叫做单机缓存,即将服务部署到一台服务器上,所以本地缓存只适用于当前系统

举个例子,这个就如同每个学校的校规,根据学校的宗旨以教学理念不同,每个学校的校规都不一样,对于A学校的学生来说,B学校的校规毫无意义,也就是说每个学校的校规只适用与那个学校

所以本地缓存只适用于当前系统

优缺点

  • 访问速度快,但无法进行大数据存储
  • 集群的数据更新问题
  • 数据随应用进程的重启而丢失

分布式缓存

分布式缓存也叫做多机缓存,即将服务部署到多台服务器上,并且通过负载分发将用户的请求按照⼀定的规则分发到不同服务器。

而分布式缓存就如同教育局定下来的教学规范,无论是任何学校都必须遵守这个规范。

所以分布式缓存适用与所有的系统。

优缺点

  • 支持大数据量存储,不受应用进程重启影响
  • 数据集中存储,保证数据一致性
  • 数据读写分离,高性能,高可用
  • 数据跨网络传输,性能低于本地缓存

Memcached VS Redis

在市面上流行的分布式缓存中间件有两种,分别是Redis和Memcached,我们该如何对他们进行一个选择呢?
存储方式

  • Memcached把所有数据存在内存当中,数据大小不能超过内存大小,并且断电后数据会丢失。(不支持持久化,导致容灾能力弱)
  • Redis有部分存储在硬盘中,保证了数据的持久性。(持久化策略)

数据类型

  • Memcached对数据类型的支持较为简单,有时需要将数据拿到客户端来进行类似的修改再set回去,增加了网络IO的次数和数据体积
  • Redis具有复杂的数据类型,并且这些复杂类型的操作和get/set一样高效

存储值大小

  • Redis最大可以达到512mb
  • Memcached最大只有1mb

性能对于

  • Redis使用单核,在存储小数据时Redis有着明显的优势
  • Memcached使用多核,虽然在存储小数据的时候性能不及Redis,但是在存储大数据的时候Memcached要远远强于Redis

虽然从上面的结论以及当前流行程度来看,Redis都遥遥领先,但是在某些场景下,Memcached的作用也会高于Redis(例如海量数据查询),所以还需要根据具体使用场景来进行选择

适用场景

  • Redis除了作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;
  • Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等。

什么是缓存?为什么要使用Redis?相关推荐

  1. spring boot 缓存_Spring Boot 集成 Redis 实现数据缓存

    Spring Boot 集成 Redis 实现数据缓存,只要添加一些注解方法,就可以动态的去操作缓存了,减少代码的操作. 在这个例子中我使用的是 Redis,其实缓存类型还有很多,例如 Ecache. ...

  2. 同程旅行王晓波:同程凤凰缓存系统在基于 Redis 方面的设计与实践(上篇)

    王晓波 同程旅行机票事业群 CTO 读完需要 12 分钟 速读仅需 4 分钟 本章和大家分享一下同程凤凰缓存系统在基于 Redis 方面的设计与实践.在本章中除了会列举我们工作过程中遇到各种问题和误区 ...

  3. 缓存(cache、Redis)

    缓存(Cache,Redis) 1.pom <?xml version="1.0" encoding="UTF-8"?> <project x ...

  4. 【缓存】分布式缓存系统-DCache、redis、Memcached、SSDB

    分布式缓存系统有DCache.redis.Memcached.SSDB等 区别 实际开发中经常使用的分布式缓存系统主要有Redis.MemCache.SSDB,这三者都是KV存储方案,各有优缺,但Re ...

  5. 亿级流量、高并发与高性能场景下的电商详情页架构_2(缓存架构中的Redis)

    亿级流量.高并发与高性能场景下的电商详情页架构_2(缓存架构中的Redis) 缓存架构一定要学好的Redis,缓存架构中的高可用,高并发,海量数据,备份,随时可恢复,缓存架构要支持这些,则redis一 ...

  6. java redis缓存清除_java基础-redis缓存篇

    Redis的数据类型 Redis总共支持5种数据类型,分别是: 类型 说明,命令 String set ,get Hash HMSET myhash field1 "Hello" ...

  7. MyBatis-25MyBatis缓存配置【集成Redis】

    文章目录 概述 集成步骤 1.添加项目依赖 2. 配置redis 3. 修改PrivilegeMapper.xml中的缓存配置 其他缓存框架 概述 Redis是一个高性能的key-value数据库 M ...

  8. springboot整个缓存_SpringBoot中整合Redis(缓存篇)

    实际开发中缓存处理是必须的,不可能我们每次客户端去请求一次服务器,服务器每次都要去数据库中进行查找,为什么要使用缓存?说到底是为了提高系统的运行速度.将用户频繁访问的内容存放在离用户最近,访问速度最快 ...

  9. php读取文件和读取redis,本地测试读取redis和普通文件缓存的速度,redis慢一倍?...

    本地电脑测试读取redis和普通文件缓存的速度,分别连续读取缓存文件1次.1千次.1万次,缓存内容大小40KB,redis读取速度总比文件缓存速度慢一倍.如果确实如此,是不是在低并发情况下file缓存 ...

  10. java 缓存分页_基于redis做缓存分页

    在实际业务中我们会将一些热数据缓存到redis里面,这时候数据量比较大的话,我们就要对这些热数据进行分页,分页的方式有2种: 第一:从redis拿出所有数据后,再做内存分页(不推荐),热点数据小的时候 ...

最新文章

  1. 【Android Lock Pattern】图案解锁(一):LockPatternView源代码
  2. 全球及中国LCP行业应用项目布局及产能规模预测报告2021版
  3. $.ajax和$.load的区别
  4. 7-7 六度空间 (30分)_现役球员中,谁最可能成下一位30000分先生?3大前十巨星没戏...
  5. stripe pay_J2Pay –简介
  6. 编写高效的PyTorch代码技巧(上)
  7. yii mysql 主从_mysql主从同步实践YII
  8. vue组件transition的使用(demo演示) - 教程篇
  9. 剑指offer系列14---合并两个升序链表
  10. node怎么解析vue代码_vue中node_modules中第三方模块的修改使用详解
  11. 行为型模式——状态模式(十一)
  12. js将阿拉伯数字转化成大写
  13. 计算机一级ppt加水印,2017年计算机一级WPS辅导:WPSOffice2007中插入水印和改变背景色...
  14. 绘制一幅蓝图_给未来画一幅蓝图
  15. TCP的三次握手和四次断开
  16. Jetson Nano从零开始(2):硬件篇
  17. 2022年焊工(初级)考试模拟100题模拟考试平台操作
  18. ubuntu系统执行lunch时报错的处理方法
  19. mysql 实现日期格式化(date_format)
  20. TCP/ip 协议端口范围 详解

热门文章

  1. self-利用self在类封装的方法中输出对象属性
  2. mysql日期/时间转换为字符串
  3. SpringBoot 读取资源文件
  4. 《CDN 之我见》原理篇——CDN的由来与调度
  5. 英语考试(最小生成树)
  6. android WebView 显示网页
  7. awstats+jawstats自动分析日志
  8. 用PHP做负载均衡指南
  9. 笨方法学python之import sys与from sys import argv的区别
  10. 洛谷 - P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查(最大流最小割)