测试第一篇-浅谈redis

有问题联系qq:2246396553{欢迎骚扰,如不及时请见量}

#闲来之时,对于2019年即将结束,自己对这个行业的一些感悟吧,从开始的接口测试—>web测试—->app测试—–>ui自动化测试,自己这一两年对一些测试的总结吧,自己从入行也对这个行业比较感兴趣,优质内容是一切的基础;
##言归正传,很多人问我一些缓存方面的问题,其实自己在面对这些问题去多问自己为什么,为甚么需要去使用redis;其实在项目中使用redis我主要考虑两个方面,一是性能,二是并发,当然redis还具备分布锁等功能 ,像一些sql经常需要查询,耗时较旧,这样比较适合放入缓存 ,并发:在大并发的情况下,所有的请求直接访问数据库,数据库这时候会出现连接异常,或者cpu过高直接导致数据库异常,这个时候用redis作为缓存(操作),这时候直接经过缓存,减少数据库压力
###实际经历
#select * from uuser_game_role where roleid=1 and appid=1 and serverID=1 and channelID=1 ORDER BY ctime desc由于开发这条慢sql导致数据库cpu过高,数据库连接异常;当然对于查询数据量的大的sql,对于开发的写的sql都要仔细的去分析sql,而不是没有命中索引去全表搜索;
#当然redis涉及到数据类型string,hash,list,set,sort,今天对于自己的理解主要讲下hash吧,hash存储主要有两种方式,第一种把其它信息封装成一个对象已序列化的方式存储eg:hash类型是一个键值对(key-value形式),例如存取一位订单的信息可以key(orderid),序列化的value对订单存订单信息,当然这种方式主要缺点增加的序列化/反序列化的开销-{主要是因为修改其中一项信息,需要把整个对象收回};第二种key -filed-value,这个角色对象有多少成员就存取多少个key-value{Redis的Hash实际是内部存储的Value为一个HashMap};实际上用哪种方式完全取决于你的业务应用场景;
当然网上也有一些比较好的问题”某明星发布恋情,动不动微博就崩溃;但这并不是redis缓存技术导致,由于转发+评论量非常的大,导致同一时间段高并发.
#1.redis扩容可能导致缓存数据失效(取模)
2.缓存穿透,查询一个不存在的数据,由于缓存缓存是不命中时被动写入的,如果从存储层查不到,则不写入缓存,其结果是导致这个不存在的数据每次都到数据库去查询,失去了缓存的意义,流量大的时候DB可能挂掉.> 当然解决方式eg:1)不存在的数据用拦截器拦截掉2)如果查询返回的数据为空,我们可以把这个空结果进行缓存,对于过期时间可以自己设置为5分钟’
3.缓存击穿,对于一些设置了热点key,如果这些key可能会在某些时间被超高并发访问,可能会把DB压垮
4.缓存雪崩指的是设置缓存采用了相同的过期时间或者其它情况,导致缓存某一时刻同时失效,DB压力过大雪崩
5.redis集群缓存测试总结
—上线需要注意老代码读新缓存是否有问题,新代码读新缓存;缓存反序列化的问题(不同服务的方式不一样)
—DB事务性回滚,缓存是否会滚,有没有脏数据
—注意线上预发(redis是否同一库服务器上,注意区分),还有测试环境的区别.
—有些缓存合理的设置过期时间
—哪些操作会删除缓存,哪些操作会set缓存
redis使用命令可以直接get hget hgetall在服务器上,或者桌面工具RedisDesktopManager,针对那个服务(ping域名)
5.4 redis持久化(内存数据保存到硬盘)
RDB和AOF作用:可以有效防止,在redis宕机后,缓存失效的问题

#<单个Redis server对请求的处理是基于单线程工作模型的,但由于是纯内存操作,并且单线程的工作模式避免了线程上下文切换带来的额外开销,同时使用NIO多路复用机制(单线程维护多个I/O socket的状态,socket event handler统一进行event分发,并通知到各个event listener),所以即使是单台Redis server的性能也是非常的快,可支持11万次/秒的SET操作,8.1万次/秒的GET操作>
ttl key
ttl命令返回值是键的剩余时间(单位是秒)。当键不存在时,ttl命令会返回-2。没有为键设置过期时间(即永久存在,这是建立一个键后的默认情况)返回-1

预发和线上用同一套redis 线上是旧代码,怕序列化失败[都是先执行sql–然后部署服务,预发删一个缓存测试下
redis序列化::—-序列化的好处
–1–永久性保存对象,保存对象的字节序列到本地文件或者数据库中,实现了数据的持久化,通过序列化可以把数据永久的保存到硬盘上,
–2–利用序列化实现远程通信,可以在网络上传送对象的字节序列。
–3–在进程间传递对象
最近导出excel会出现超时的情况,初步判断是数据增长太快,数据量太大,请求时间超过了设置的超时时间
重点是在于采用了异步的思想取代原来同步的流程,这样请求就不会出现超时的情况,无论处理多久都木有关系   
这里采用redis来记录也是考虑到下载会有一个过期时间,一个请求可能过一段时间就无效,未完待续……………….


 上一篇
测试第二篇-浏览器原理 测试第二篇-浏览器原理
#前端web测试需要注意的点–前言 浏览器目前重要性还在加强,当然不止pc端,很多移动端应用都内嵌web页面;eg谷歌新推出的PWA技术,让web应用跟接近原生应用,其实在我们公司那时候做H5sdk集成游戏时,pwa 基于 Service
2019-07-13 lusheng
本篇 
测试第一篇-浅谈redis 测试第一篇-浅谈redis
有问题联系qq:2246396553{欢迎骚扰,如不及时请见量}#闲来之时,对于2019年即将结束,自己对这个行业的一些感悟吧,从开始的接口测试—>web测试—->app测试—–>ui自动化测试,自己这一两年对一些测试的总
2019-06-21 lusheng
  目录