來源:北大青鳥總部 2023年02月06日 11:16
在互聯(lián)網(wǎng)發(fā)展的早期,那還是一個各路軍閥混戰(zhàn),實戰(zhàn)為王的時代,沒有所謂正規(guī)軍,搞定問題才是王道。
當然,那個時期也沒有那么多問題,互聯(lián)網(wǎng)還是個新鮮的詞匯,能被稱作是網(wǎng)民的人也都是“稀有物種”,上網(wǎng)多半是大戶人家才玩的起的高端奢侈品。
從技術(shù)的角度來看,那時還處在Web應(yīng)用發(fā)展的初期,互聯(lián)網(wǎng)技術(shù)架構(gòu)還是最原始的單體架構(gòu),因為此時的網(wǎng)民數(shù)量還是很少,一個服務(wù)器完全足夠扛起用戶的訪問的壓力。
這個時期的關(guān)系型數(shù)據(jù)庫得到了較為廣泛的關(guān)注和應(yīng)用,網(wǎng)站訪問量談不上什么高并發(fā)、更別說什么用戶體驗了。
但是轉(zhuǎn)眼到現(xiàn)在,中國的互聯(lián)網(wǎng)發(fā)展已經(jīng)是發(fā)生了天翻地覆的變化,也早已經(jīng)不是當年那個“吳下阿蒙”。在如今這個不提三高(高并發(fā)、高可用、高性能)都不好意思說自己是個程序猿。
現(xiàn)在單純的依靠關(guān)系型數(shù)據(jù)庫已經(jīng)無法滿足的我們的業(yè)務(wù)需求了,更何況當今在云計算、大數(shù)據(jù)、人工智能盛行的時代,對技術(shù)的需求也更加的多元化。
現(xiàn)在網(wǎng)絡(luò)上每天都會產(chǎn)生龐大的數(shù)據(jù),這些數(shù)據(jù)有很大一部分是由關(guān)系型數(shù)據(jù)庫來處理,其嚴謹成熟的數(shù)學(xué)理論基礎(chǔ)使得數(shù)據(jù)建模和應(yīng)用程序編程更加簡單。
然而,由于數(shù)據(jù)量級很大而且包含有大量的無規(guī)律的數(shù)據(jù),而我們?nèi)绻胍玫睦眠@些數(shù)據(jù),對數(shù)據(jù)的處理和存儲的重要性也越來越高,如果還僅僅依賴關(guān)系型數(shù)據(jù)庫顯然是不太現(xiàn)實的。所以,此時非關(guān)系型數(shù)據(jù)庫(NoSQL)就應(yīng)運而生了,
接下來讓我們看看什么是非關(guān)系型數(shù)據(jù)庫。
所謂非關(guān)系型數(shù)據(jù)庫,其實是相對于關(guān)系型數(shù)據(jù)庫而說的,我們都知道關(guān)系型數(shù)據(jù)庫通常都是處理一些結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)通常都是有某些對應(yīng)關(guān)系。
非關(guān)系型數(shù)據(jù)庫(NoSQL)通常用于存儲那些類型不固定的,也沒有什么規(guī)律的數(shù)據(jù)。現(xiàn)在的企業(yè)每天都產(chǎn)生大量的數(shù)據(jù)過程中,非關(guān)系型數(shù)據(jù)庫的應(yīng)用非常廣泛,應(yīng)用場景也非常多,比如:緩存等,目前比較常用的非關(guān)系型數(shù)據(jù)庫有
Redis
Memcache
MongoDb
HBase
今天咱們就為大家解讀其中一個非常優(yōu)秀且用的非常多的非關(guān)系型數(shù)據(jù)庫-Redis。
非關(guān)系型數(shù)據(jù)庫之Redis,提到Redis可謂是無人不知無人不曉,當然是在程序猿這個可愛的群體中;不管你是從事Python、Java、Go,還是世界上最好的語言PHP開發(fā),Redis都應(yīng)該是一個比較熟悉的中間件產(chǎn)品。Redis是一個 Key-Value 存儲結(jié)構(gòu),它支持存儲的value 類型非常豐富:
string(字符串)
hash(哈希)
list(列表)
set(無序集合)
zset(sorted set:有序集合)
在Java開發(fā)過程中Redis的應(yīng)用場景也非常多,比如:緩存、秒殺、分布式鎖等;接下來咱么就來一睹Redis芳容。
走進Redis實戰(zhàn)俗話說的好:"光說不練假把式,光練不說傻把式,連說帶練全把式",所以接下來,咱們就連說代練的實操一把
首先介紹一下我們的開發(fā)環(huán)境,這里咱們是基于Java語言使用IDEA做為開發(fā)工具,使用Spring Boot來集成Redis。(Redis的安裝內(nèi)容,大家可以按照自己的習(xí)慣使用Windows版、Linux版本都可以。)
Java中操作Redis的方案很多,我們使用目前最主流的Spring Boot Redis,從名稱上我們就可以看出來,這又是Spring對操作Redis的客戶端的封裝,沒錯Spring就是這么優(yōu)秀。
我們知道在SpringBoot中默認集成的就是Spring Data Redis,它提供了針對Redis提供了非常方便的操作模板類RedisTemplate;那么接下來我們就來看看Spring Boot中Spring Data Redis的具體用法。
Tips:在spring中凡是以XxxTemplate命名的類,都是Spring提供的操作xxx的模板類。如:RedisTemplate就是操作Redis的模板類
使用Spring Initializr創(chuàng)建Spring Boot基礎(chǔ)工程,引入Redis依賴有兩種方式:
1.直接在pom文件中加入redis依賴
2.在創(chuàng)建項目的時候直接勾選Spring Boot Redis
在application.properties中添加redis的相關(guān)配置信息
接下來咱么來編寫一個測試類,存儲一個字符串類型的數(shù)據(jù),并且取出來驗證是否存儲成功
RedisTemplate模板類提供了對5種數(shù)據(jù)結(jié)構(gòu)操作的方法,其他的數(shù)據(jù)類型大家感興趣可以自己去試下,使用方式都是一樣的
redisTemplate.opsForValue() 操作string
redisTemplate.opsForHash() 操作hash
redisTemplate.opsForList() 操作list
redisTemplate.opsForSet() 操作set
redisTemplate.opsForZSet() 操作有序set
實戰(zhàn)測試結(jié)果如下:
結(jié)果表明我們從redis中取出的數(shù)據(jù)和存儲的數(shù)據(jù)是一樣的,說明我們在spring中使用Spring Data Redis是成功的,是不是很簡單呢,馬上動手練練吧