当前位置: 首页 > news >正文

【Redis】为什么选择 Redis 做缓存?

近期文章:

【Redis】Redis 底层的数据结构(结合源码)

【MySQL】索引底层的数据结构 B+Tree

 在系统开发中,我们经常会使用 Redis 作为缓存系统,但你知道为什么要使用缓存吗?为什么是使用 Redis 作为缓存呢?下面我就简单说说我的看法

Q1:为什么要使用缓存?

这个问题其实很简单。

对于数据库中的热点数据,用户的访问频率很高,如果每次都是去数据库中重复的获取,会给数据库造成很大的压力,特别是用户基数大的系统。

此时如果加入缓存,那么就只有在用户第一次访问时才会去数据库获取数据,后续的访问,只要缓存中存在的数据就不需要去数据库获取了,进而大大减轻了数据库的压力。

Q2:为什么是使用 Redis 作为缓存呢?

高并发:直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以可以把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这里而不用经过数据库。

高性能:用户第一次访问数据库中的数据,因为是从硬盘上读取的,所以这个过程会比较慢。将该用户访问的数据存在缓存中,下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据。

这里也会产生另一个问题:Memcached 也可以做缓存,为什么不适用 Memcached 而选择使用 Redis?

 要回答这个问题,只需要分析两者之间的共同点以及不同点答案自然明朗了

共同点:

1)都是基于内存的数据库,一般都用来做缓存使用

2)都有过期策略

3)两者的性能都非常高

不同点:

1)Redis 支持的数据结构更加丰富(String、Hash、List、Set、ZSet、Bitmaps、HyperLogLog、GEO、Stream),而 Memcached 只支持最简单的 key-value 数据类型

2)Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启后数据依然存在;而 Memcached 没有持久化功能,一旦重启,数据也就丢失了

3)Redis 支持原生集群模式,Memcached 没有原生集群模式,需要依靠客户端实现往集群中分片写入数据

4)Redis 支持发布订阅模型、Lua 脚本、事务等功能,而 Memcached 不支持

现在是否就很清晰了

一  叶  知  秋,奥  妙  玄  心

http://www.lryc.cn/news/431609.html

相关文章:

  • Flutter 开发常用第三方库总结
  • OpenCV中的颜色映射函数applyColorMap的使用
  • Ubuntu22.04安装colmap
  • 认识GO语言中的nil,零值与空结构体
  • Node.js sqlite3:Statement对象详解
  • ELK学习笔记——如何给Kibana新增用户和角色
  • Minikube Install Kubernetes v1.18.1
  • 重修设计模式-创建型-工厂模式
  • 使用Cskin时候 遇到按钮有默认阴影问题解决
  • 121.rk3399 uboot(2017.09) 源码分析1(2024-09-05)
  • 【图论】虚树 - 模板总结
  • [C#学习笔记]注释
  • c# checkbox的text文字放到右边
  • 【node.js】基础之修改文件
  • Notepad++回车不自动补全
  • CSS线性渐变拼接,一个完整的渐变容器(div),要拆分成多个渐变容器(div),并且保持渐变效果一致
  • 【60天备战软考高级系统架构设计师——第十天:软件设计与架构综合练习】
  • 2024.8.15(python管理mysql、Mycat实现读写分离)
  • CMU 10423 Generative AI:lec2
  • 恋爱相亲交友系统源码原生源码可二次开发APP 小程序 H5,web全适配
  • OceanBase 4.x 存储引擎解析:如何让历史库场景成本降低50%+
  • js 如何写构造函数 ,构造函数和普通函数有什么区别
  • MySQL-进阶篇-锁(全局锁、表级锁、行级锁)
  • c++懒汉式单例模式(Singleton)多种实现方式及最优比较
  • Gartner《2024中国安全技术成熟度曲线》AI安全助手代表性产品:开发者安全助手D10
  • 奇安信椒图--服务器安全管理系统(云锁)
  • pointer-events,添加水印的一个小小点
  • 微服务--认识微服务
  • 【docker】docker 镜像仓库的管理
  • 第L2周:机器学习-线性回归