Code前端首页关于Code前端联系我们

Guava、Memcached 和 Redis,为什么选择 Redis?

terry 2年前 (2023-09-26) 阅读数 53 #数据库

Redis 是一个数据库。
与传统数据库将数据存储在磁盘上不同,Redis 将数据存储在内存中,因此通常被称为内存数据库;同时Redis存储也被称为NoSQL数据库、非关系型数据库。
由于Redis将数据存储在内存中,因此读写速度非常高。因此,Redis被广泛应用于缓存或者其他需要高速读写的场景。

为什么使用Redis

在软件架构中引入Redis是因为它“快速且强大”。

1。快是指高性能

计算机硬件的速度从低到高是:硬盘-网络-内存-CPU;

在传统数据库中,如果第一次访问数据库中的某项数据,通常会比较慢,因为数据库必须从硬盘读取数据;而且Redis中的数据存储在内存中,因此速度比从磁盘读取数据要快得多。

所以我们经常把Redis当作缓存:第一次从数据库读取数据放到Redis中,然后直接访问Redis。

2。强是指高并发场景下的稳定性(高可用)

在高并发场景下,Redis能够承受的访问限制比数据库要大很多,所以可以考虑需要。大量并发读取数据放在Redis中;
具有闪购功能,例如几秒钟内就有数十万次访问。如果直接服务数据库的话,数据库瞬间就会不堪重负。

哪些场景不适合放入Redis

当然这并不意味着所有场景、所有数据都适合放入Redis。通常我们需要考虑以下几点:

  • 数据查询命中率高吗? ?如果缓存命中率很低,则无需放入Redis;
  • 有多少次数据读写操作?如果数据会被频繁写入(添加、修改、删除)并且写操作次数设置大于读操作次数,那么就没有理由使用Redis;
  • 业务数据的大小是多少?如果要存储文件,则无需将其放在Redis中。

本地缓存或Redis

缓存分为本地缓存和分布式缓存:

1。本地缓存

比如Guava、Ehcache,甚至将缓存保存到Map中,这些都是本地缓存;
本地缓存的特点是轻量级、实现简单,生命周期随着JVM的销毁而结束;但如果应用有多个实例(安装了多套应用),每个实例中的缓存就不一致。

2。分布式缓存

Redis称为分布式缓存。如果应用程序有多个实例,每个实例可以共享Redis中的缓存数据。但由于Redis的引入,需要保证Redis的高可用性。 ,架构更加复杂。

Redis 或 Memcached

Memcached 也经常被用作缓存,也是分布式缓存的一种。那么它和Redis有什么区别呢?

  • Redis支持更丰富的数据类型,Memcache支持简单的String数据类型;
  • Redis支持数据持久化,可以将内存中的数据存储在硬盘上,并在重启后将数据加载到内存中。 Memcache只是将数据存储在内存中;
  • Redis目前支持集群模式,但Memcached没有内置集群模式,必须由用户自己实现;
  • Redis采用单线程多路IO复用模型(Redis在最新版本6.0开始支持多线程); Memcached采用多个非阻塞IO复用的网络模型。
Guava、Memcached 和 Redis,为什么选择了 Redis?Redis和Memcache的区别

最后再强调一点,要不要引入Redis?使用本地缓存还是分布式缓存?一切都要根据项目的实际情况; Redis丰富的数据类型和对持久化的支持会更适合我们的项目。

会写代码的叔叔|文字【原创】

作者:会码字的大叔
-链接:https://juejin.im/post/5deef9cbf265DA33D56D1761
来源:掘金
作品正常版权归作者所有。商业转载请联系作者获取授权。非商业转载请注明出处。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门