使用Redis做缓存的原因有哪些

网友投稿 214 2024-01-03

使用Redis做缓存的原因有哪些

这篇文章给大家分享的是有关使用Redis做缓存的原因有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

对Redis,百度百科给出的的解释是

“Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API”

“Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。”

那么,Redis有什么优点

Redis支持数据持久化

Redis的读写性能非常优异

丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。

Redis的数据结构丰富,除了支持string类型的value外还支持hash、set、zset、list等数据结构。

相对应的,Redis也有缺点

数据库容量会受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。

如果主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。

Redis 较难支持在线扩容

Redis是单线程的,单台服务器无法充分利用多核服务器的CPU

为什么我们要使用Redis呢?

从高并发上来说:

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

从高性能上来说:

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

为什么要使用Redis而不是其他的,例如Java自带的 map 或者 guava

缓存分为本地缓存和分布式缓存。以 Java 自带的 map 或者 guava为例子, 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。

使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持 redis 或 memcached服务的高可用,整个程序架构上较为复杂。

Redis为什么这么快

完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中

数据结构简单,对数据操作也简单

采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU

使用多路 I/O 复用模型,非阻塞 IO

感谢各位的阅读!关于“使用Redis做缓存的原因有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:XamarinSQLite如何创建数据表
下一篇:oracle如何使用odbc连接dm7
相关文章

 发表评论

暂时没有评论,来抢沙发吧~