[Redis源碼系列]在Liunx安裝和常見API

前言

hello,好久不見,又斷更了一段時間。同事大部分離職了,但是活還是一樣,所以只能硬着頭皮頂上。現在總算歇會了,決定開啓Redis源碼系列,希望不要啪啪啪打臉。

什麼是redis?

Redis是一種基於鍵值對(key-value)的NoSQL數據庫,主要的數據類型包括String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合),bitmaps(位圖),GEO(地理信息定位)等。

注意:如果面試問Redis數據類型,前五個是基礎,必須答對,後面兩個是亮點。

redis的優勢

1.數據存儲在內存中,讀取和寫入速度快。如果需要持久化,可以開啓相關配置,數據定期保存在硬盤上。

2.使用單線程,避免線程競爭,也避免線程之間上下文切換消耗。

3.主節點和從節點之間可以複製,水平擴展,突破單機部署的限制。

4.提供哨兵和集羣方式,保證有節點發生故障,保存整個服務的高可用性。

注意:以上的優點以後都會單開章節來討論,現在有個大概印象就行,不用死記硬背😂。

redis基本安裝

上面講的是不是太空了,眼睛說記住了,腦子說沒有🤣。那我們實操下,在linux上安裝redis服務,看看怎麼玩?至於windows比較簡單,屬於開箱即用的,這邊就不寫了。

1.下載壓縮包

先去官網下載download.redis.io/releases/安裝包,建議是下載redis4。之後看底層結構也是使用的redis4。

redis4和redis3的區別:

1.在redis4中,string類型的底層結構針對不同長度的字符串分爲了sdshdr5,sdshdr8,sdshdr16,sdshdr32,sdshdr64等多種結構體,更加節約內存,而redis3只使用了int,embstr,raw。

2.在redis4中,持久化可以使用RDB和AOF混合方式。

2.上傳到服務器並解壓

   通過遠程管理工具,將壓縮包拷貝到Linux服務器中,執行解壓操作

3.進入src目錄,執行make install進行安裝

4.開啓後臺啓動配置

我們打開redis.conf文件,修改daemonize爲yes,讓其能在後臺運行。

6.啓動

進入src目錄,使用redis-cli連接客戶端。

redis常用API

string類型

1.設置值 set [key] [value] [expried time] [nx|xx]

上面表示設置key的字符串,值爲value,過期時間爲expried time 。nx表示不存在才能設置成功,用於新增;xx表示存在才能設置成功,用於更新。

我們首先給str變量設置了hello,然後嘗試用nx來更新str,但是發現更新失敗了,因爲nx表示str不存在的時候才能設置,現在str是存在的。最後用xx來更新,發現是更新成功的。

2.獲取值 get key

3.批量設置值 mset [key value] [key value] [key value]

數據設置進去按組來劃分的,每個key對應一個value,當設置成功後查詢發現,出來是亂碼,不是我們設置的中文。

其實這不是亂碼,只是客戶端顯示問題,我們只需要在啓動客戶端的時候加上--raw,指定其顯示格式即可。

4.批量獲取值 mget [key] [key] [key]

hash類型

1.設置值 hset key field value

2.獲取值hget key field,效果如上

3.批量設置值 hmset key [field] [value] [field] [value]

4.批量獲取值 hmget key [field] [field] [field]

5.獲取某個key所有的fields hkeys key

list類型

1.從list的左側插入新數據 lpush key value

在list列表的左側插入三個元素a,b,c,返回值爲當前list的長度3。

2.從list的右側插入新數據 rpush key value

在list列表的右側插入兩個元素d ,e,返回值爲當前list的長度5。

3.查詢list的所有元素

這邊需要注意的是往左節點插入的三個元素順序,lpush每次將新元素插入到列表的頭部,所以順序爲 c,b,a。

4.獲取列表長度llen key

5.從左側刪除元素 lpop key

刪除鏈表的第一個元素,返回值爲刪除的元素值c。再查詢下list現在的元素,分別是b,a,d,e。

6.從右側刪除元素 rpop key

與上面從左側刪除元素一樣,返回值也爲刪除的元素。

7.刪除指定元素 lrem key count value

刪除指定元素,重點是count,這邊count分爲三種情況:

1).當count>0,從左到右,最多刪除count個元素。

2).當count<0,從右到左,最多刪除count個元素。

3).當count=0,刪除所有滿足條件的元素。

set類型

1.添加元素 sadd key[field] [field] [field]

往myset1中插入三個字符串,分別是hello,world,java,返回值爲插入成功的數值。

2.刪除元素 srem key [field] [field]

3.計算元素個數 scard key

4.判斷元素是否存在sismember key [field]

之前刪除了myset中的hello元素,所以第一條語句的返回值爲0,表示不存在。而world沒有刪掉,所以返回值爲1,表示存在。

5.獲取所有的元素sismembers key

6.集合之間的並集sunion [key] [key]

我們先看myset1和myset2的數據,然後使用sunion來獲取他們的並集。

7.集合之間的交集 sinter [key] [key]

8.集合之間的差集 sdiff [key] [key]

這邊要注意key的前後區別,如果是sdiff myset1 myset2,意思是myset1除去兩者的交集,所以結果是world和cc。

如果反之,亦然。

zset類型

1.添加元素 zadd key [score member] [score member]

2.計算長度 zcard key

3.計算排名 zrank key member(zrevrank key member)

myzset中一共有三名學生,張三,李四,王五,他們分數分別爲80分,90分,70分,那他們的排序是第一名李四90分,第二名張三80分,第三名王五70分。

zrank表示正排名,返回值爲下標。zrevrank表示逆排名,返回值也是下標。

結語

這篇主要是Redis的入門課程,主要從Redis是什麼,哪些優點,Linux上如何快速安裝,常見的數據結構和API使用。強調的是先從總體入手,對其有個大概印象,瞭解其和關係型數據庫的區別。至於一些常見數據類型的適用場景,底層設計,我們下偏見。

如果覺得寫得還行,麻煩給個贊👍,您的認可纔是我寫作的動力!

如果覺得有說的不對的地方,歡迎評論指出。

好了,拜拜咯。

求個關注

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章