redis为什么这么火该怎么用

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介:

  最近一些人在介绍方案时,经常会出现redis这个词,于是很多小伙伴百度完redis也就觉得它是一个缓存,然后项目里面把数据丢进去完事,甚至有例如将实体属性拆分塞进redis hash里面的奇怪用法等等!原因是什么呢?大家觉得redis火,使用了redis项目就是高大上的,于是不管三七二十一,项目里用上强塞一个用上!这里本人想说的是你知道redis为什么这么火么,应该怎么用么?下面带着本人拙建,简单分析一下:

一、redis性能

  redis是一个基于内存hash结构的缓存型db,同mysql等传统数据库对比性能时,读操作在1k左右数据的时候相差基本上在10-100倍的差别,写入的性能差别就更大了,下面是一些测试数据

 

  通过对redis的set、get命令测试观察,redis的读写性能在单线程下可以达到每秒2W左右;通过对mysql的select和insert、delete语句测试,mysql的读性能可达到5000每秒左右,写性能可到达3000每秒,读性能基本是写性能的2倍。而上述测试是基于redis单实例、单连接的情况,如果根据cpu核数来增加redis实例,并且使用pie和多连接,这个数据还能轻松的再上一个数量级~也可参见一下网上其他人发布的一些redis性能测试,例如:https://www.sohu.com/a/29865580_219700

二、redis缓存

  上面分析了redis的性能非常高,基本上同机器配置下完全吊打传统sql,甚至nosql的mongodb等。即使这样redis也只是一个分布式缓存,或者说是分布式缓存数据库,那么redis肯定不能像传统数据一样,动不动放个几T的数据,一般都是用来放热数据或者体量小的数据,其他的数据还是使用队列通过后台服务放到sql db里面;另外根据redis的特性,建议服务器cpu核心数要留个1/4,每个实例的内存最得多出1/2;假如24核的120G的服务器,建议部署18个reids实例,每个实例5G的内存,实际使用不要超过3G的数据量~reids是缓存就继承了缓存的优缺点,性能高是优点,缺点:缓存穿透、缓存雪崩。

  1.缓存穿透:缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂了。

 

  解决办法就是将从db过来的返回值进行缓存,根据实际情况重新加热,若db返回是空则缓存几分钟就可以了。

   2.缓存雪崩:在我们设置缓存时采用了相同的过期时间或者缓存服务器因某些原因无法使用时,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。

  解决办法过期时间上增加一个范围的随机值,使用Redis Sentinel 和 Redis Cluster 实现高可用,另增设一个寿命更短的本机缓存来解决redis分布缓存抢修时的问题。

  在发生无论是缓存穿透还是缓存雪崩,都建议使用队列来排队、拒绝大量请求涌入和分布式互斥锁来避免后端数据服务被冲击,防止已有的数据出现问题。

三、总结

  redis很强大,无论是哨兵式集群还是自带的redis cluster方式集群,但是一定要对redis了解清楚才能更好的使用~

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
打赏
0
0
0
0
2
分享
相关文章
|
12天前
|
Redis--缓存击穿、缓存穿透、缓存雪崩
缓存击穿、缓存穿透和缓存雪崩是Redis使用过程中可能遇到的常见问题。理解这些问题的成因并采取相应的解决措施,可以有效提升系统的稳定性和性能。在实际应用中,应根据具体场景,选择合适的解决方案,并持续监控和优化缓存策略,以应对不断变化的业务需求。
64 29
Redis应用—8.相关的缓存框架
本文介绍了Ehcache和Guava Cache两个缓存框架及其使用方法,以及如何自定义缓存。主要内容包括:Ehcache缓存框架、Guava Cache缓存框架、自定义缓存。总结:Ehcache适合用作本地缓存或与Redis结合使用,Guava Cache则提供了更灵活的缓存管理和更高的并发性能。自定义缓存可以根据具体需求选择不同的数据结构和引用类型来实现特定的缓存策略。
Redis应用—8.相关的缓存框架
Redis缓存设计与性能优化
Redis缓存设计与性能优化涵盖缓存穿透、击穿、雪崩及热点key重建等问题。针对缓存穿透,可采用缓存空对象或布隆过滤器;缓存击穿通过随机设置过期时间避免集中失效;缓存雪崩需确保高可用性并使用限流熔断组件;热点key重建利用互斥锁防止大量线程同时操作。此外,开发规范强调键值设计、命令使用和客户端配置优化,如避免bigkey、合理使用批量操作和连接池管理。系统内核参数如vm.swappiness、vm.overcommit_memory及文件句柄数的优化也至关重要。慢查询日志帮助监控性能瓶颈。
51 9
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
217 85
Redis,分布式缓存演化之路
本文介绍了基于Redis的分布式缓存演化,探讨了分布式锁和缓存一致性问题及其解决方案。首先分析了本地缓存和分布式缓存的区别与优劣,接着深入讲解了分布式远程缓存带来的并发、缓存失效(穿透、雪崩、击穿)等问题及应对策略。文章还详细描述了如何使用Redis实现分布式锁,确保高并发场景下的数据一致性和系统稳定性。最后,通过双写模式和失效模式讨论了缓存一致性问题,并提出了多种解决方案,如引入Canal中间件等。希望这些内容能为读者在设计分布式缓存系统时提供有价值的参考。感谢您的阅读!
138 6
Redis,分布式缓存演化之路
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
112 6
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期实操教学-应对高并发,利用云数据库 Tair(兼容 Redis®)缓存实现极速响应
本文介绍了如何通过云端问道21期实操教学,利用云数据库 Tair(兼容 Redis®)缓存实现高并发场景下的极速响应。主要内容分为四部分:方案概览、部署准备、一键部署和完成及清理。方案概览中,展示了如何使用 Redis 提升业务性能,降低响应时间;部署准备介绍了账号注册与充值步骤;一键部署详细讲解了创建 ECS、RDS 和 Redis 实例的过程;最后,通过对比测试验证了 Redis 缓存的有效性,并指导用户清理资源以避免额外费用。
Redis经典问题:缓存穿透
本文详细探讨了分布式系统和缓存应用中的经典问题——缓存穿透。缓存穿透是指用户请求的数据在缓存和数据库中都不存在,导致大量请求直接落到数据库上,可能引发数据库崩溃或性能下降。文章介绍了几种有效的解决方案,包括接口层增加校验、缓存空值、使用布隆过滤器、优化数据库查询以及加强监控报警机制。通过这些方法,可以有效缓解缓存穿透对系统的影响,提升系统的稳定性和性能。

热门文章

最新文章