背景介紹
話說在網際網路發展的早期,那還是一個各路軍閥混戰,實戰為王的時代,沒有所謂正規軍,搞定問題才是王道。
當然,那個時期也沒有這麼多問題,畢竟那個時期,網際網路還是個新鮮的詞彙,能被稱作是「網民」的人也都是稀有物種,上網多半是大戶人家才玩的起的高端奢侈品。
從技術的角度來看,彼時還處在Web應用發展的初期,網際網路技術架構還是最原始的單體架構,網民數量很少,一個伺服器完全足夠扛起用戶訪問的壓力。
那個時期的關係型資料庫得到了較為廣泛的關注和應用,網站訪問量談不上什麼高並發、更別說什麼用戶體驗了,能玩得起就已經是完勝上億中國人了。
不過現在,中國的網際網路已經發生了天翻地覆的變化,也早已不是當年那個「吳下阿蒙」,在這個不提三高(高並發、高可用、高性能)都不好意思說自己是個程序猿的時代,單純的依靠關係型資料庫已經無法滿足我們的業務需求了,更何況當今在雲計算、大數據、人工智慧盛行的時代,對技術的需求也更加的多元化;現在網絡上每天都會產生龐大的數據,這些數據有很大一部分是由關係型資料庫來處理,其嚴謹成熟的數學理論基礎使得數據建模和應用程式編程更加簡單。
然而,由於數據量級很大而且包含有大量的無規律的數據,而我們如果想要更好的利用這些數據,就要做好對數據的處理和存儲,如果還僅僅依賴關係型資料庫顯然是不太現實的,因此,非關係型資料庫(NoSQL)就應運而生了(好像所有技術都是這麼來的,技術誕生通常是為了要解決企業某些業務需求),先來看看什麼是非關係型資料庫
非關係型資料庫(NoSQL)
所謂非關係型資料庫,其實是相對於關係型資料庫而言的,我們都知道關係型資料庫通常都是處理一些結構化的數據,這些數據通常都是有某些對應關係; 而非關係型資料庫(NoSQL)通常用於存儲那些類型不固定的,也沒有什麼規律的數據。企業每天都產生大量的數據,非關係型資料庫的應用非常廣泛,應用場景也非常多,比如:緩存等,目前比較常用的非關係型資料庫有:
Redis
Memcache
MongoDb
HBase
今天咱們就先來了解其中一個非常優秀、應用也非常多的非關係型資料庫-Redis
非關係型資料庫之Redis
提到Redis可謂是無人不知無人不曉,當然是在程序猿這個可愛的群體中;不管你是從事Python、Java、Go,還是世界上最好的語言PHP開發,Redis都應該是一個比較熟悉的中間件產品。Redis是一個 Key-Value 存儲結構,它支持存儲的 value 類型非常豐富,包含:
string(字符串)
hash(哈希)
list(列表)
set(無序集合)
zset(sorted set:有序集合)
在Java開發過程中Redis的應用場景也非常多,比如:緩存、秒殺、分布式鎖等;接下來咱們就來一睹Redis芳容。
Redis實戰篇
俗話說的好:"光說不練假把式,光練不說傻把式,連說帶練全把式",所以接下來,咱們就連說代練的實操一把
開發環境介紹
首先介紹一下我們的開發環境,這裡是基於Java語言使用IDEA做為開發工具,使用Spring Boot來集成Redis。
Redis的安裝內容,大家可以按照自己的習慣,使用Windows版、Linux版本都可以。
使用Spring Data Redis操作Redis
Java中操作Redis的方案很多,我們使用目前最主流的 Spring Boot Redis,從名稱上我們就可以看出來,這又是Spring對操作Redis的客戶端的封裝,沒錯Spring就是這麼優秀;我們知道在Spring Boot中默認集成的就是 Spring Data Redis,它針對 Redis 提供了非常方便的操作模板類 RedisTemplate ;那麼接下來我們就來看看 Spring Boot 中 Spring Data Redis 的具體用法。
Tips:
在spring中凡是以XxxTemplate命名的類,都是Spring提供的操作xxx的模板類
如:RedisTemplate 就是操作Redis的模板類
創建項目工程
使用Spring Initializr創建Spring Boot 基礎工程,引入 Redis 依賴有兩種方式:
直接在pom文件中加入redis依賴<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2. 在創建項目的時候直接勾選Spring Boot Redis
添加Redis配置信息
在application.properties中添加redis的相關配置信息
實戰操作
接下來咱麼來編寫一個測試類,存儲一個字符串類型的數據,並且取出來驗證是否存儲成功
RedisTemplate模板類提供了對5種數據結構操作的方法,其他的數據類型大家感興趣可以自己去試下,使用方式都是一樣的
redisTemplate.opsForValue() 操作string
redisTemplate.opsForHash() 操作hash
redisTemplate.opsForList() 操作list
redisTemplate.opsForSet() 操作set
redisTemplate.opsForZSet() 操作有序set
我看下測試結果如下:
我們從redis中取出的數據和存儲的數據是一樣的,說明我們在spring中使用Spring Data Redis是成功的,是不是很簡單呢,馬上動手練練吧。
作者:AI課工場,歡迎關注我們,和我們一起關注前沿技術,快速提升。