https://blog.csdn.net/qq_36905432/article/details/81121557

很多小伙伴在花时间学习完redis数据库后,很迷茫.感觉很空虚,不知道自己学习完这东西,能做点什么.从而丧失了继续学习的动力.为了能够让大家在学习redis的道路上继续前行.我觉得很有必要为大家整理一份简单实用的redis应用场景指南.

说明:

这篇指南是以工作场景为背景,以项目为引导,以redis基本命令为驱动来展开的,让你学习redis的应用场景就像读故事一样简单,阅读这些故事片段,你就能轻松掌握redis的基本应用场景,将其玩弄于鼓掌之上.

什么人适合阅读这篇文章?

熟悉redis的基本操作命令,理解nosql与sql之间的区别,但是纠结于学完redis我能拿它做什么的初学者.

什么人不适合阅读本文?

1: 大牛,老牛

2: 对文字有密集恐惧症者

1. 获取最新的n个数据

为了让小伙伴更好地理解,我这里结合示例讲解.

示例:

现在你在和讯网黄金频道上班,项目经理让你负责每天在频道首页生成一张数据表,来展示1个月内的国际黄金的开盘和收盘价格.如果我们从mysql数据库中按时间排序取出,固然可以.但是你要考虑和讯网的并发量,和你排序时对资源的一个浪费程度.

这个时候我们选取redis的列表存取,就显得很有必要了,我们知道redis有一种队列(list)的数据结构,同时它还具备先进先出的特性.那这样的话,我去最新的1个月的数据不就信手拈来么.一个lrange命令即可简单地取出你想要的区间的值.

2. 获取 TOP N 的数据

接下来的这个例子,看标题,感觉跟第1中应用差不多,其实还是有差别的.应用1我们是利用列表的先进先出的特性,按存取时间来取,接下来我们的这个示例,就是利用有序集合的特性来解决实际问题.

现在你受雇于APPLESTORE,项目经理要求你在商店首页,展示下载量排行前30的APP.

这个时候,你若能够想到我们redis学习过程中,给大家讲到的SortedSet有序集合,那就再好不过了.我们只需要将每个APP生成一个唯一的ID,将其作为集合中成员member,下载数目作为成员的score.那么当你将这个score插入到有序集合中时,redis就会按其进行大小排序,自然有个有序的集合就形成了.最终你要取前N或者后N的数据,就在于你自己了.

3. 设置精准的抢购时间

设置抢购,促销时间,这项技术在电商领域确实很实用.

现在你在阿里的淘宝事业部上班,领队组长分配你来完成一个限时抢购活动,某商品中午10:00开始进行抢购,1小时后,活动结束.

咿呀,既然限时,要准确地1个小时结束.这个时候我们学习redis的过程中,讲到的key的有效期就派上用场了.我们可以将某个活动的key的过期时间设置为过期时刻的时间戳,用户抢购的过程中并发是很高的.那么这个时候提交的数据我们未必就需要立即存入我们的硬盘数据库.用户下单时我们获取该活动的key是否过期,未过期,允许用户下单,订单数据暂时内存缓存.一旦该key失效,禁止用户下单,同时,我们可以将刚才并发的那么多笔单进行硬盘数据库的导入即可.一来实现了精准时间的设定,二来,应对了抢购的高并发量.

4. 轻松实现计数器

你目前就职的单位是中央全面深化改革领导小组技术顾问办公室,在过去如果全国人民一起选代表,既浪费人力又浪费财力.现在网络技术发展了,组长交代由你牵头开发点赞选人大平台.

接到这个项目,你是不是很犯难,13亿啊!可能同时集中在某个时间段,点赞,如此大的IO请求.硬盘数据库多少有些力不从心.哎,这个时候你要运用上我们的内存数据库系统了,redis中对key的增incre,减decr不正适合你的需求么.

5. 去除重复值

去除重复值,听起来很熟悉,我们的MySQL不是有unique索引吗?哦,好吧,我要说的是我们redis中的对字符串的set命令更使用.

你现在在下厨房平台,任职技术兼策划.你准备收集天下美食,苦于不知菜名.网络是有魔力的,人名群众的智慧是无穷的.你准备发动全国的网友们,为你提供菜名,同时你还不想让大家发出相同菜名.

看到如此问题,你是否还能想到我们之前在学习redis的字符串类型时,说到的set命令,我们讲默认情况,不给其他参数时,如果我们的key不存在,则创建添加.如果key已经存在,则旧值覆盖新值.既然如此,key值存在,则覆盖.不正是我们需要的模型么?

6. 利用set命令制作反垃圾系统

很多小伙伴,看到这,蒙了.一个破set命令什么时候还能反垃圾了.咦,你应该脑洞大一些,再大一些.

上次你制作的统计菜名系统,领导会上先把你肯定了一番,然后义正言辞地说,小明啊,你这系统不太符合净网行动的要求啊,有些网友把一些带有明显淫秽色情的菜名都提交到了系统.还被展示出来投票,这不荒唐吗?

吓的你一阵冷汗,这个时候你想到了在XX教育高性能架构班学习的同桌小胖.电话里小胖告诉你,当我们使用set命令对字符串进行操作时,给它一个NX参数,这样的话只有用户提交的key不存在时,才会对key进行操作.你去网上down一个敏感字汇字典,提前set入库,不就可以实现反垃圾了么.听完小胖的指导,紧张的你如释重负.

7. 利用发布订阅的中的SUBSCRIBE和PUBLISH命令构建实时消息推送系统

费了老鼻子劲,你终于进入了新浪微博事业部.第二天组长找到正埋头苦干的你.小明,咱们微博也要搞个跟FB一样一样的关注功能,搞大V认证,大V一发消息,赶紧推送给关注的那群XX,让XX跟大V赶紧互动起来.以此来提高用户粘性.组长走后,"赶紧,推送",这两个词在你的耳畔不时地回响.

你又想到了小胖,小胖电话里告诉你.redis里有subscribe订阅和publish发布功能的.你挂了电话,去自学it网里一搜索,果不其然.一个subscribe可以订阅不同的用户模型,只要对应的模型有publish实现,订阅者即可实时收到,推送的消息.你虽然不是王大锤,但你也万万没想到redis竟然有如此功能.O(∩_∩)O哈哈~

8. 构建队列系统

忙完微博的事,正准备收拾东西去挤地铁的你.突然被组长叫住了.

小明,你虽然完成了微博关注和推送的技术架构.但是这几天又有个新问题出现了.因为FB用不了,微博用户暴增.特别是认证大V的用户越来越多,就连门口烤红薯的大爷早上还拽着我说,给他整个大V吧,俺不差钱.老板为了缓解认证方面的压力,已经开始收费认证了,但是还是挡不住这群XX.赶上过节饭点,大V们几乎同时发微博,推送服务器有点压力.你把这个问题解决了,再走吧,晚点回去打车公司报销.然后打完卡他走了.

"同时发微博","同时推送,服务器压力大".你从电脑中找到了小胖之前发给你的那本redis自学笔记,笔记上说.我们可以将若干个需要执行的事件加入队列,然后按时间的顺序去逐个逐个的执行.这个时候你又想到了一个提高用户互动性的好办法.我能不能让粉丝数目多的大V的微博优先推送呢?毕竟粉丝基数大,影响大,总能搞出一个大新闻.既然这样,我直接使用有序队列不就行了.把一个个大V的微博推送事件ID存入有序队列,同时依据粉丝数给予权重(或说优先级).不就可以达到我们的需求了么.

9. 缓存

这一点大家应该很熟悉了,它可以像memcache一样充当缓存数据库.不过的它的数据类型比memcache多的多,应对场景自然要比memcache丰富的多.比较时髦的用法是,用其来缓存会话哦.

转载于:https://www.cnblogs.com/davidwang456/articles/9362254.html

学了redis我能拿你做什么相关推荐

  1. 学一点Redis基础

    文章目录 学一点Redis基础 **Redis介绍** **安装** **配置文件详解** **数据类型** **字符串类型(string)** **==位图操作bitmap==** **列表数据类型 ...

  2. 小妹妹要面试了却没有项目实践的经验,约到奶茶店指导一番,用SpringBoot、Redis、LUA教她做一个!

    前言 那些吧redis基本的东西学的差不多了,却没有做过什么具体的项目实践的,可以看看这篇文章做一个项目来巩固知识. 相关需求&说明 一般来说秒杀系统的功能不会很多,有: 制定秒杀计划.在某天 ...

  3. 零元学Expression Blend 4 - Chapter 40 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(上)...

    零元学Expression Blend 4 - Chapter 40 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(上) 原文:零元学Expression Blend 4 - ...

  4. Mysql和Redis数据同步该怎么做

    前言 算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕+美团 不知不觉双11就来了,轰轰烈烈的秋招也完美结束了,不知算法与数据结构成为了多少小伙伴进击大厂的绊脚 ...

  5. 为什么要做稀疏编码_为什么我每天都要编码一年,所以我也学到了什么,以及如何做。...

    为什么要做稀疏编码 by Paul Rail 由Paul Rail 为什么我每天都要编码一年,所以我也学到了什么,以及如何做. (Why I coded every day for a year, w ...

  6. 学python有前途吗-现在学Python还有前途吗?能做什么?

    现在学Python还有前途吗?能做什么?无论是从行业人才需求,国家政策支持,还是从Python本身广泛应用的优势来看,学Python都是极其有个人发展前途的.至于可以从事的工作岗位就更多了,像Linu ...

  7. 我不是学计算机专业的,想转行做程序员,怎么办?

    我不是学计算机专业的,想转行做程序员,怎么办? 1.很多人想转行程序员是因为互联网行业薪水高.但坦率说,进入互联网行业道路千万条,转程序员的难度第一条.而且这个岗位还始终伴随着持续的加班.无尽的学习. ...

  8. 学人工智能好就业吗?可以做什么?AI就业方向及前景

    学习人工智能确实是一个非常好的选择,因为AI目前正在快速地发展和应用到各个领域,有很多的就业机会. 学人工智能好就业吗?可以做什么?AI就业方向及前景 AI就业方向包括但不限于以下几个方面: 机器学习 ...

  9. Redis 缓存数据库使用 Redis-Shake 做数据同步

    目录 Redis 缓存数据库使用 Redis-Shake 做数据同步 Redis-shake 简介 Redis-Shake 同步的五种模式 基本原理 部署过程 同步模式 restore 模式 dump ...

最新文章

  1. ASP的Server.UrlEncode和Asp.Net的Server.UrlEncode的返回结果不同
  2. git 拉取远程分支及修改远程仓库地址
  3. [HOW TO]-ubuntu20.10环境上安装workpress
  4. for循环只执行一次_Python中for循环和while循环有什么区别?
  5. 下列叙述正确的是( )
  6. c语言用fun求矩阵,C语言通过函数调用求n*n阶矩阵周边元素绝对值之和
  7. ipython的使用
  8. 电脑分屏设置主屏_华硕灵耀 X2 Pro 体验:两块屏幕的笔记本电脑,体验怎样?...
  9. IOS开发一些资源收集
  10. JSP之jsp内置标签
  11. 冒烟测试流程图和测试数据准备
  12. ArcMap|地理探测器(geoDetector)前在ArcGIS中的处理
  13. mysql80004005错误_常见的80004005错误及其解决方法
  14. 几个简约Jekyll主题推荐
  15. mysql 问号作用,在“WHERE column =?”中MySQL中问号的意义是什么?
  16. 制作PE系统--20220202
  17. 苹果手机该如何拍摄证件照
  18. vue项目无法启动,谷歌浏览器报:您与此网站之间建立的连接不安全,实际是cdn服务器过期
  19. html [JS]随机密码生成[运维工具]
  20. 波动率曲面(完整版)

热门文章

  1. java 清空jframe_java – 在新游戏中清除我的JFrame和JPanel
  2. wireshark 抓包显示 TCP segment of a reassembled PDU的问题
  3. 三校生计算机模拟试题1,甘肃省2015年“三校生”考试摸拟试题1
  4. 安卓实训项目:基于储存卡音乐播放器实训报告4.0
  5. petalinux zynq spi_ZYNQ 系列 01 | PL 实现按键控制 LED(1)
  6. html5 可以用adb 调试,ADB常用命令及作用
  7. python数据库操作nosql_用Python写一个NoSQL数据库
  8. sql between包括两端吗_简单查询-SQL
  9. java cursor_使用3.0驱动程序的Java中的Tailable Cursor示例?
  10. 按键驱动的思路分析和代码实现