浮华编思论-番外技术-redis(1)

写给自己的话,博客应该是记录你一些心得,属于你自己的东西,而不是当笔记本,如同百度云盘保存那么多不看的资料,只要是你自己的哪怕简单一点,有你自己的思想,那么就是一个很好的起步。致浮华。

形成自己的一套对于新技术的想法,怎么去熟悉新技术,为未来提供知识储备。

目前业务需求引出业务需求,来当做自己学习新技术的一个方法。

A.技术基本是springboot+mybatis+mysql来当做后端的模板。数据储存在mysql中,每一次增删改查都需要调用连接数据库进行查询,查询有对应消耗,单个数据每秒最多查询不超过2000次。

场景是需要你进行某一个用户消费记录的显示,用户有多个并且需要显示用户名字。很简单的sql就可以实现了查询用户消费表,然后用户id关联出用户表,通过子查询带出对应用户名字就可以实现。一个sql就可以解决问题。组长要求sql里面要干净,不要带子查询逻辑,sql就是一个单表的增删改查,那么怎么处理?先写一个查询所有的用户消费记录,然后获取对应消费记录中id,分别去查询对应用户id。重复太多,如何去处理?最好哪里可以有缓存一下,本地使用缓存,创建一个map,里面存放所有id对应名字,然后对应id放到map中取出对应的名字来实现用户姓名的显示。效率分析,数据库操作是只有二次,但是问题来了,对应压力到了服务器,而且所有名字,其中大部分可能是不需要的,随着数据库用户变多,你获取所有然后保存到map中,之后再遍历的是绝对不行的。进一步,引入redis。依然是查询所有的用户消费记录表的信息,然后对应用户id先查询redis中是否存在,如果不存在,查询一次数据库,并且对应用户id跟用户名称放到redis缓存,设置过期时间。redis基于内存,查询数据快于mysql数据库查询。那么原先将调用数据库1+N次,优化到调用数据库1+ Z (Z<=N)+ 调用redis (N-Z)次 ,对应最差就是每次都调用数据库,但是如果redis缓存可以命中一些用户数据,那么就是提高了效率,而且redis比mysql抗揍,redis基于内存,4w qps 也能抗下来,比mysql的2000 qps 要抗揍很多。所以本次技术引入使用是成功的。

B.初识redis,那么怎么去学习redis。其实redis本身你也可以当成第三方来调用,只是这个第三方反馈很及时。

这里省略redis的安装以及对应客户端安装。默认是有16个db (0-15),如果不设置默认是0.需要提醒到的是,不同db的数据不同步的,出现过客户端跟管理端使用的是不同的redis的db,其中客户端是1,管理端是2。然后客户端存在用户登录失败,就会记录到失败次数在对应db1,当用户手机号对应失败次数到达5,就会直接返回用户被禁止登录,请等待解封之后处理。当然如果用户失败4次,然后第5次成功了,就清空对应用户失败次数。同理在管理端,也实现用户的登录重置,一开始只是简单跟客户端一样,查询是否有对应key,如果存在就清空。结果问题出现对应redis数据库不一样,所以后面调整到对应共用一个数据库,(网上查询了一下,可以切换对应数据库开支不大但是没找到在线切换数据库的方法,所以就采取了共用一个数据库的方法。不过客户端跟管理端的缓存都放在了一起,这里对应用户key添加user跟manage拼接到key作为区分)。另外redis最显著二个特点是高可用,高并发。其中高并发只是通过网上了解对应redis基于内存,可以承受4wqps的访问量,远比mysql的2000qps要来的高很多,而且redis访问速度比mysql快。但是redis无法代替mysql,因为redis是作为缓存的,它并不能代替数据库,redis的数据总会有清空的。

C.redis的数据类型理解

String的get key value跟set key value属于单个操作,群操为前面加上M 也就是Mset跟Mget,删除为 del key,数字递增 incr key  指定整数增加 incrby key increment。数字递减decr key 指定整数减少 decrby key decrement。尾部追加值  append key value。场景对应,简单的key-value应用在用户登录验证部分,用户每次登录都会携带对应token,如果用户进行操作都要进行权限token验证,那么每次查询都需要访问数据库,交互就很频繁,所以token放到redis中保存。另外,原先是一些功能访问有对应次数,为了防止被频繁爬虫,就设置了对应使用次数的校验,每次使用功能一次就自增一次,并且设置过期时间,比如在10s内该账号访问次数达到20次,就进行禁止登录,token清空处理,以此来实现对账号的把控,更进一步则是记载对应访问的ip地址,在对应云服务器上进行设置黑名单。对应解封,微信联系客服进行解封。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,730评论 0 36
  • Redis 1. redis 简介 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛...
    xMustang阅读 356评论 0 0
  • Nosql概述 在介绍Redis之前,首先先要介绍Nosql的概念。 互联网架构发展 在90年代的时候,计算机访问...
    COKIDCC阅读 756评论 0 1
  • 三年前,我是个彻彻底底的失败者,尽管现在也很堕落,但在那时我就连自己也觉得过得没有任何意义。 我出生于...
    夕阳浅照阅读 241评论 1 4
  • 用一段摘抄告别坚定而又任性的24岁 迎接风风火火的本命年生辰 没有flag 于亲人 于自己选择的家人 于朋友 愿难...
    Harriet安安阅读 192评论 0 1

友情链接更多精彩内容