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