最近一些人在介绍方案时,经常会出现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为什么这么火该怎么用相关推荐

  1. Redis数据库教程——系统详解学习Redis全过程

    Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统:     Key-Value Store是当下比较流行的话题,尤其 ...

  2. Redis系统性介绍

    虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍.是一个很不错的Redis入门 ...

  3. NoSql数据库简介及Redis学习

    NO-Sql数据库:Not Only不仅仅是SQL 定义:非关系型数据库:NoSQL用于超大规模数据的存储.(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据).这些类型的数据存储不需要固 ...

  4. 缓存用不好,Bug改到老

    前言 日常工作中,缓存的使用随处可见.缓存使用得当,对提升系统的性能,提高用户体验感有着至关重要的作用.但是如果使用不当,就会出现一些令人费解或者数据混乱的问题.本文将给大家普及常见的一些缓存使用与缓 ...

  5. 【性能优化】PHP - 优化手段 - 学习/实践

    1.应用场景 主要用于从多个层面多种手段去优化PHP程序性能,或者移植性,阅读星,维护性. 2.学习/操作 1.文档阅读 性能优化 = 改改代码?- 学习/实践_穿素白衫的少年的博客-CSDN博客 h ...

  6. oracle批量插入优化,oracle批量插入优化方案

    今天听DBA说如果从一个表批量查询出一批数据之后批量插入另外一张表的优化方案: 1)不写归档日志: 2)采用独占 关于insert /*+ append */我们需要注意以下三点: a.非归档模式下, ...

  7. 为什么Redis要比Memcached更火?

    作者:Kaito 链接:kaito-kidd.com/2020/06/28/redis-vs-memcached/ 前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之 ...

  8. 为什么 Redis 要比 Memcached 更火?

    作者:Kaito 链接:kaito-kidd.com/2020/06/28/redis-vs-memcached/ 前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之 ...

  9. 腾讯、火绒回应“QQ 读取浏览器历史记录”;字节跳动起诉百度获赔 40 元;Redis 6.0.10 发布 | 极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 丁恩华 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. Python django实现简单的邮件系统发送邮件功能
  2. python 数据结构包_Python Redistr包_程序模块 - PyPI - Python中文网
  3. 经典C语言程序100例之二五
  4. Netty私有栈协议
  5. ubuntu安装时发现GPT分区表,无法安装问题
  6. 感恩节(美食火鸡大餐)PNG免扣素材 总有一款你用得上
  7. 明星AI芯片公司Graphcore获红杉5000万美元投资
  8. kmeans算法中的sse_k-means聚类算法原理与参数调优详解
  9. VC++可视化编程——创建空白窗口
  10. linux node安装菜鸟教程,手把手告诉你如何安装多个版本的node
  11. Ruff自主研发的NB-IoT智能网关获得联通实验室测试通过
  12. 可重用性,可维护性,可读性,可测试性,可用性,健壮性
  13. I03 403-(Python+mysql) 飞机票销售系统
  14. 游戏出海行业现状概况
  15. NO.3 微信第三方平台代创建小程序审核发布以及小程序信息(头像,名称,简介)修改 以及微信错误码 返回信息
  16. 请原谅我一生读题不仔细~仅以此纪念多校第十场1004
  17. 方舟手游服务器设置文件翻译,方舟生存进化手游界面中文翻译 语言不通不发愁...
  18. syntax error, expect {, actual string, pos 1, fastjson-version 1.2.68
  19. Event-Triggering Sampling Based Leader-FollowingConsensus in Second-Order Multi-Agent Systems
  20. Flutter学习指南:UI布局和控件,作为Android开发者

热门文章

  1. Android推送通知指南(转)
  2. 如何衡量两个词的相关度
  3. php算法求出兔子数列,PHP算法:斐波那契数列的N种算法
  4. 正则表达式应用:实现一个简单的计算器
  5. React - 状态提升
  6. Eclipse Add generated serial version ID报错解决方案
  7. django基础1--django安装与helloworld测试
  8. 实战~~整个网络无法浏览,提示网络不存在或者尚未启动
  9. js数组去重,合集等操作
  10. ASP.NET Core(十)Configuration 配置优先级详解