成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

我眼中的 Redis

liujs / 1133人閱讀

摘要:如今數(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ù)搜集、實時通訊。

NoSQL

Redis屬于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 SanfilippoMySQL的性能大失所望,于是他決定自己寫一個數(shù)據(jù)庫。牛人就是牛人,我們就算質(zhì)疑MySQL的性能,想寫也寫不出來啊?!

2009年,Salvatore Sanfilippo完成了數(shù)據(jù)庫的編寫,這就是Redis。

Salvatore SanfilippoRedis開源,并一直進行著Redis的開發(fā),直到今天。我們熟知的Github、StackOverflow、新浪微博等公司都是Redis的用戶。

緩存

傳統(tǒng)的緩存代碼需要這樣寫,很冗長,都是重復的代碼。

ValueOperations valueOperations = 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 List findAll() {
    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

相關(guān)文章

  • 眼中 Nginx(五):Nginx — 子請求設計之道

    摘要:上圖中,每個紅圈表示一個請求,每一層的請求分別是上一層請求的子請求。換而言之,父請求是依賴于子請求的。特別地,的子請求運行時,會阻塞父請求掛起其對應的協(xié)程。 張超:又拍云系統(tǒng)開發(fā)高級工程師,負責又拍云 CDN 平臺相關(guān)組件的更新及維護。Github ID: tokers,活躍于 OpenResty 社區(qū)和 Nginx 郵件列表等開源社區(qū),專注于服務端技術(shù)的研究;曾為 ngx_lua 貢...

    Jioby 評論0 收藏0
  • 一個開發(fā)眼中運維

    摘要:資源包括什么內(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...

    Hanks10100 評論0 收藏0
  • JDK源碼那些事兒之眼中HashMap

    摘要:接下來就來說下我眼中的。鏈表轉(zhuǎn)換為樹的閾值,超過這個長度的鏈表會被轉(zhuǎn)換為紅黑樹,當然,不止這一個條件,在下面的源碼部分會看到。 源碼部分從HashMap說起是因為筆者看了很多遍這個類的源碼部分,同時感覺網(wǎng)上很多都是粗略的介紹,有些可能還不正確,最后只能自己看源碼來驗證理解,寫下這篇文章一方面是為了促使自己能深入,另一方面也是給一些新人一些指導,不求有功,但求無過。有錯誤的地方請在評論中...

    voyagelab 評論0 收藏0
  • 眼中閉包

    閉包,顧名思義就是一個封閉的包裹,你沒辦法窺探到其內(nèi)部,只能通過暴露給你的方法進行操作。其實在寫代碼的過程中,我們可能已經(jīng)使用了閉包,只是當時不知道而已。等理解了閉包,再去回顧以前的代碼,就會發(fā)現(xiàn)JavaScript中閉包無處不在。剛開始學習閉包的時候,我看過很多關(guān)于閉包的文章,大部分都會舉例這樣一段代碼:showImg(https://segmentfault.com/img/bVO3Mo?w=...

    leeon 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<