1. 程式人生 > >學了redis我能拿你做什麼

學了redis我能拿你做什麼

很多小夥伴在花時間學習完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豐富的多.比較時髦的用法是,用其來快取會話哦.

相關推薦

redis什麼

很多小夥伴在花時間學習完redis資料庫後,很迷茫.感覺很空虛,不知道自己學習完這東西,能做點什麼.從而喪失了繼續學習的動力.為了能夠讓大家在學習redis的道路上繼續前行.我覺得很有必要為大家整理一份簡單實用的redis應用場景指南. 說明: 這篇指南是以工作場景

又見DZ,怎麼辦

Step 0 實驗環境 操作機:Windows XP [172.16.11.2] 實驗工具: 中國菜刀 Burpsuite ps:圖片可單擊放大觀看。 Step 1 本次實驗中,有兩點需要突破,一是管理員口令,二是安全提示問題; 管理員口令

vipkids騙局?vipkid不想,不退款嗎?

tro mar ado com 而且 -o 比較 經驗 分享 vipkids騙局?vipkid不想學了,不能退款嗎?最近vipkid是連連中招,一開始是vipkid騙局,vipkid坑人,面對這樣的負面信息,家長們查詢一下還是能夠識別真假的,因為前段時間每家機構都被黑了,這

解析:大數據營銷系統什麽

量變 發展趨勢 店鋪 解析 趨勢 引入 關鍵詞 個人 營銷 隨著互聯網的發展,智能手機的普及應用,人們開始接受信息的方式呈現多樣化的發展趨勢且信息數量越來越大。隨著互聯網對各大傳統行業的沖擊,傳統企業不能再憑借以往的經驗進行營銷,將用戶進行標簽化已經越來越重要。隨著人們個性

全面瞭解阿里雲什麼

阿里雲: 阿里雲創立於2009年,是全球領先的雲端計算及人工智慧科技公司,致力於以線上公共服務的方式,提供安全、可靠的計算和資料處理能力,讓計算和人工智慧成為普惠科技。 阿里雲服務著製造、金融、政務、交通、醫療、電信、能源等眾多領域的領軍企業,包括中國聯通、12306、中石化、中石油、飛利浦

0基礎轉行Python,到什麼地步到月薪15k+?

Python 可用的地方非常多。無論是從入門級選手(爬蟲、前端、後端、自動化運維)到專業級資料探勘、科學計算、影象處理、人工智慧,Python 都可以勝任。或許是因為這種萬能屬性,周圍好更多的小夥伴都開始學習 Python。 眾所周知,由於搭上 AI 的專車,Python 薪酬和需求也是高出其他語言很多(資

隨筆——假如看到

假如我有超能力,我在每個人頭上看到一個計數器——餘下的人生裡,我還能和他見多少次。 上班路上,大概會和數不清的兩位數及一位數擦肩而過;見到老闆頭上的數字有多大,就知道自己還會在這裡工作多久;同事頭上的數字意外的小,暗地裡戳一戳:嘿,你是要跳槽麼? 出門旅行的時候,見到的每個人頭上

滑鼠失靈來給解決吧!

節選至:➡➡➡連結⬅⬅⬅ 滑鼠失靈的原因有很多種:滑鼠壞了、滑鼠接觸不良、系統卡頓、驅動衝突等,前兩種屬於硬體故障,後兩種屬於軟體故障。如果是軟體故障,我們可以通過設定電腦系統中的一些選項來將其恢復;若是硬體故障,那就只能更換或是送修了。 有線滑鼠失靈分析 (一)硬體故障

移動網際網路的浪潮來撈點蝦兵蟹將嗎

[size=medium] 今天講一則“破窗理論”,也叫“破窗效應”。大致的內容是這樣的:一幢有少許破窗的建築為例,如果那些窗不被修理好,可能將會有破壞者破壞更多的窗戶。最終他們甚至會闖入建築內,如果發現無

微信開發-機器人-些什麼?

提醒功能 比如淘寶,京東,拼多有訂單了,通過微信機器人去提醒供應商發貨。 比如生日快到,微信提醒誰要過生日了。 提醒女朋友,每天早上自動給女朋友們提醒早上好,晚上提醒晚安!!! 活躍群氣氛 機器人具有智慧聊天功能,可以陪群友聊天,能講笑話,查詢天氣、抽籤、配對等娛樂功能 有三公、骰寶、搶jie、猜數字、猜拳、

不是說朝聞道夕死可矣嗎(如果發現自己的學習模式,願意並且堅持,覺得沒什麽阻擋征服軟件世界的腳步),安曉輝大神的感悟

說我 服務器 摘錄 syn 給他 sync 外包 學習曲線 有限公司 從技術支持中途轉戰軟件開發,如今從事編程工作已十多有余,2014年CSDN博文大賽編程語言組冠軍、CSDN Qt論壇的版主安曉輝老師從今天開始,坐鎮CSDN社區問答欄目的 第十四期,屆時會接受廣大網友的提

C/C++,什麼?

如今學習程式設計的同學越來越多,也有很多人想轉行去學習這個,但是大多數人學習這個都是看到工資高,自己喜不喜歡,學了能做什麼都不知道,今天就給大家分享一下,學了C/C++,你們能往哪些方向發展,希望能對你們以後的發展方向有幫助。 對這方面感興趣或者想學習C/C++,在

神:天天玩沒怎麽。但是怎麽成神?

自己的 之間 要求 事情 代碼 必須 html 解釋 社會 作者:@nele本文為作者原創,轉載請註明出處:http://www.cnblogs.com/nele/p/7615447.html 還記得上學時候那些天天玩,每當考試都能名列前茅的同學嘛?可能所有人都覺得都

的Android手機投屏到電腦上嗎?方法都給列出來

and bsp linu 中文 電腦 接收 放音 系統 bin 共享屏幕正在一步一步的進入到我們的生活中,從最原始的手機-電視屏幕共享到現在的手機-電腦屏幕共享,這一規模正在逐步的擴散至全球的各個角落中,隨之的手機型號的不同,從symbian-Windows phone-F

C++,適合什麼?!

對於為什麼要學習C++語言,這一點,想必很多人都聽官方或者非官方說過很多。 如果你百度一下,說什麼的都有。輸入“C++”,保證可以搜到一大堆。可以你可能還是不理解為什麼要學習C++語言? 縱觀各種程式語言,C語言、C++語言、Java、C#。。。,要說一個技術思想覆蓋最廣的,只有C++語言了

月入三萬,一個雞蛋?

陳年往事 “我月入3萬,怎麼會少少了你一個雞蛋啊?” 這是2017年9月左右的一個新聞,一位煎餅攤大媽因和顧客爭執時脫口而出這樣一句話而走紅。當時還上了各大新聞的頭條。 網際網路興起今天,讓資訊高速的傳播,讓很多人可能都已經忘了這萬千焦點中的微不足道的一個小小插曲。

程式設計師只能做到35歲嗎,年級大以後會被淘汰嗎,現在已經30歲,還嗎?

工程師像醫生一樣,屬於年齡越大經驗越豐富,年齡越大越能解決複雜的問題。由於歐美髮展計算機比中國早20年左右,現在歐美50歲以上的程式設計師有很多,這都非常正常。也有很多程式設計師做了轉到產品經理、架構師、CTO技術總監、技術部經理、副總裁等等,這些職位需要有程式設計師的技術功底和豐富的專案管

程式設計師啊,不用開口就知道是老江湖先禿為敬,胖請隨意

看到這裡請允許我解釋一下片頭曲其實跟程式設計師關係不是很大完全就是藝術家的自說自話歌詞裡一直重複

Python多久?為什麽還不會爬蟲?

希望 興趣 pass 回憶一下 經驗 imp 更多 提問 差距 學習是個很有意思的事,有的人隨便學學就能很快學會,而有的人明明很努力卻什麽都沒學會,這是為甚呢?有的人學了3個月,甚至更久卻連一個項目或者一個爬蟲都不會做,這究其原因是和你的學習效率有關。對於大家所問的Pyth

看完就知道什麼是 HTTPS ------其實發現很多人不懂https, 包括!所以來下這篇佳作!

什麼是 HTTPS ? 不管是使用手機還是電腦上網,都離不開資料的通訊 現在網際網路上傳輸資料,普遍使用的是超文字傳輸協議,即 HTTP (HyperText Transfer Protocol) 所以,我們以前在上網的時候,會發現所有的網址都一個 http:// 字首: HTTP 協議 簡單而言,HTT