摘要:如今數(shù)據(jù)量越來越大,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)無法應付如此大數(shù)據(jù)的需求了。由此可見,在數(shù)據(jù)量日漸增長的今天,為了解決大數(shù)據(jù)量與高并發(fā)的難題,應運而生。的消息存儲采用的就是數(shù)據(jù)庫,支持大數(shù)據(jù)進行隨機實時訪問。
引言
打開Microsoft To-Do,發(fā)現(xiàn)Redis的學習計劃還躺在那里。
其實我對Redis的理解,僅僅停留在我認識這個單詞的層面上。
學習 簡介本來對這個Redis沒什么興趣的,不就是一個緩存的數(shù)據(jù)庫而已嗎?直到上次配置spring-redis的時候,發(fā)現(xiàn)這個東西沒有用戶名。
spring: redis: host: 127.0.0.1 port: 6379 password:
配置如上所示,只有主機、端口和密碼,和普通的MySQL或其他數(shù)據(jù)庫不同。
Redis是一個使用ANSI C編寫的開源、支持網(wǎng)絡、基于內(nèi)存、可選持久性的鍵值對存儲數(shù)據(jù)庫。
我們熟知的就是Redis的緩存,Redis采用C編寫,運行異常的快。是有磁盤存儲支持的內(nèi)存數(shù)據(jù)庫!
適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可遇見(適合內(nèi)存容量)的應用程序。
使用場景:股票價格、數(shù)據(jù)分析、實時數(shù)據(jù)搜集、實時通訊。
NoSQLRedis屬于NoSQL,NoSQL = Not Only SQL。
如今數(shù)據(jù)量越來越大,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)無法應付如此大數(shù)據(jù)的需求了。
舉個例子:假設我們使用關(guān)系型數(shù)據(jù)庫存儲朋友圈,那一天會產(chǎn)生多少數(shù)據(jù)?再查詢的時候數(shù)據(jù)庫不就死了嗎?
這讓我想起了我之前關(guān)注的一個帖子:騰訊微信的后臺數(shù)據(jù)庫到底是怎么設計的?無知的人相談甚歡,最后好像是官方的哥們是在看不下去了,回復:誰告訴你們微信用的是關(guān)系型數(shù)據(jù)庫?
普通關(guān)系型數(shù)據(jù)庫,如果只查詢的話效率很高?如果算上讀寫的話?那可能傳統(tǒng)的數(shù)據(jù)庫都承受不住高并發(fā)。
重要的是關(guān)系型數(shù)據(jù)庫沒法擴展,大家想一想,因為數(shù)據(jù)之間是有關(guān)系的,所以數(shù)據(jù)庫擴展絕對不像擴展后臺服務規(guī)模一樣再拎個服務器出來那么簡單。
由此可見,在數(shù)據(jù)量日漸增長的今天,為了解決大數(shù)據(jù)量與高并發(fā)的難題,NoSQL應運而生。
NoSQL產(chǎn)品主要有四類:
類型 | 特點 | 代表 | 適用場景 |
---|---|---|---|
鍵值對存儲 | 能實現(xiàn)快速查詢,但存儲的數(shù)據(jù)缺少結(jié)構(gòu)化 | Redis | 內(nèi)容緩存,主要用于處理大數(shù)據(jù)的高訪問負載 |
列存儲數(shù)據(jù)庫 | 查找速度快,可擴展性強,更容易進行分布式擴展,但功能相對局限 | HBase | 分布式的文件系統(tǒng) |
文檔數(shù)據(jù)庫 | 數(shù)據(jù)結(jié)構(gòu)要求不嚴格,查詢性能不高,而且缺乏統(tǒng)一的查詢語法 | MongoDB | Web應用(相較于普通的Key-Value,其Value是結(jié)構(gòu)化的) |
圖形數(shù)據(jù)庫 | 利用圖結(jié)構(gòu)相關(guān)算法,但需要對整個圖做計算才能得出結(jié)果,不容易分布式 | Neo4j | 社交網(wǎng)絡,推薦系統(tǒng),專注于構(gòu)建關(guān)系圖譜 |
這些數(shù)據(jù)庫的名稱大家或多或少應該聽說過吧?今天才真正知道它們的作用,各有其特長,我們需根據(jù)業(yè)務場景動態(tài)選擇。Facebook的消息存儲采用的就是HBase數(shù)據(jù)庫,支持大數(shù)據(jù)進行隨機、實時訪問。
NoSQL因為數(shù)據(jù)之間都是沒有關(guān)系的,所以易擴展,同時具有很高的讀寫性能,很適合高并發(fā)場景。
歷史2008年,意大利的一家創(chuàng)業(yè)公司Merzia推出了一款基于MySQL的網(wǎng)站實時統(tǒng)計系統(tǒng)LLOOGG。
沒過多久,創(chuàng)始人Salvatore Sanfilippo對MySQL的性能大失所望,于是他決定自己寫一個數(shù)據(jù)庫。牛人就是牛人,我們就算質(zhì)疑MySQL的性能,想寫也寫不出來啊?!
2009年,Salvatore Sanfilippo完成了數(shù)據(jù)庫的編寫,這就是Redis。
Salvatore Sanfilippo將Redis開源,并一直進行著Redis的開發(fā),直到今天。我們熟知的Github、StackOverflow、新浪微博等公司都是Redis的用戶。
緩存傳統(tǒng)的緩存代碼需要這樣寫,很冗長,都是重復的代碼。
ValueOperationsvalueOperations = redisTemplate.opsForValue(); logger.info("判斷Redis中是否有Key"); if (redisTemplate.hasKey(url)) { logger.info("Redis命中,從Redis中獲取"); return valueOperations.get(url); } logger.info("發(fā)起Get請求"); ResponseEntity response = restTemplate.getForEntity(url, String.class); logger.info("存入緩存"); valueOperations.set(url, response.getBody(), TIME_OUT, TimeUnit.MINUTES);
感謝Spring AOP,我們可以使用注解實現(xiàn)緩存功能。
@Cacheable("cacheName") public ListfindAll() { return studentRepository.findAll(); }
使用注解實現(xiàn)緩存很簡單,同時@Cacheable還有許多的高級用法,以后與大家詳述。
操作Redis有三種動作:
GET:根據(jù)鍵查找值。
SET:給定鍵存儲值。
DEL:刪除鍵中的值。
然后就是Redis的數(shù)據(jù)結(jié)構(gòu),這個覺得暫時還不需要知道,畢竟現(xiàn)在使用的是現(xiàn)成的@Cacheable注解,還不需要我們手動去操作Redis。
一如代碼深似海,軟件之路很廣很遠。生命有限的我們不能把所有東西都精通,我們要在學習成本與能力提升之間進行權(quán)衡。
總結(jié)故不積跬步,無以至千里;不積小流,無以成江海。騏驥一躍,不能十步,駑馬十駕,功在不舍。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/62084.html
摘要:上圖中,每個紅圈表示一個請求,每一層的請求分別是上一層請求的子請求。換而言之,父請求是依賴于子請求的。特別地,的子請求運行時,會阻塞父請求掛起其對應的協(xié)程。 張超:又拍云系統(tǒng)開發(fā)高級工程師,負責又拍云 CDN 平臺相關(guān)組件的更新及維護。Github ID: tokers,活躍于 OpenResty 社區(qū)和 Nginx 郵件列表等開源社區(qū),專注于服務端技術(shù)的研究;曾為 ngx_lua 貢...
摘要:資源包括什么內(nèi)存磁盤網(wǎng)絡文件描述符外部緩存數(shù)據(jù)庫等,編程語言是如何管理資源的合理的算法架構(gòu)保證了資源的合理使用,分配內(nèi)存使用網(wǎng)絡等等。 在云計算時代,開發(fā)和運維的結(jié)合變得越來越重要。在DIFF論壇第一期,前新浪SAE運維主管,鄭志勇,分享了《一個開發(fā)眼中的運維》根據(jù)自己從開發(fā)人員轉(zhuǎn)型運維之后的心得,談如何把在開發(fā)上的運用抽象思維方式運用到運維領(lǐng)域。 showImg(http://se...
摘要:接下來就來說下我眼中的。鏈表轉(zhuǎn)換為樹的閾值,超過這個長度的鏈表會被轉(zhuǎn)換為紅黑樹,當然,不止這一個條件,在下面的源碼部分會看到。 源碼部分從HashMap說起是因為筆者看了很多遍這個類的源碼部分,同時感覺網(wǎng)上很多都是粗略的介紹,有些可能還不正確,最后只能自己看源碼來驗證理解,寫下這篇文章一方面是為了促使自己能深入,另一方面也是給一些新人一些指導,不求有功,但求無過。有錯誤的地方請在評論中...
閱讀 1279·2021-11-23 09:51
閱讀 1637·2021-11-16 11:45
閱讀 4073·2021-10-09 09:43
閱讀 2698·2021-07-22 16:47
閱讀 958·2019-08-27 10:55
閱讀 3461·2019-08-26 17:40
閱讀 3100·2019-08-26 11:39
閱讀 3238·2019-08-23 18:39