天天看點

面試官說我離高薪 offer 隻差一個Redis入門,他是認真的(1)

說起來,可能有些小夥伴會不相信,我是第一次用 Redis,真的。因為公司小,業務量小,Redis 根本派不上用場。不過,最近打算把系統更新一下,順帶把當下時髦的技術入個門,“與時俱進”嘛,雖然進的有“一點點”晚(注意雙引号)。

作為一名富有責任心的技術部落客,我覺得有必要把我入門 Redis 的過程分享出來,供一些小夥伴作為參考。要是我哪裡寫錯了,别客氣,過來給我一巴掌,就行了(溫柔點,别打腫,影響顔值就不好了)。

01、Redis 是什麼

Redis 是網際網路技術領域中使用最廣泛的存儲中間件,它是 Remote Dictionary Service 三個單詞中加粗字母的組合。你别說,組合起來後念着挺自然的。

Redis 以超高的性能、完美的文檔、簡潔的源碼著稱,國内外很多大型網際網路公司都在用,比如說阿裡、騰訊、GitHub、Stack Overflow 等等。它的版本更新非常的快,功能也越來越強大,最初隻是用來作為緩存資料庫,現在已經可以用它來實作消息隊列了。

可以這麼說吧,掌握 Redis 已經變成了一項後端工程師必須具備的基礎技能。

Redis 的作者是一名意大利人,網名 Antirez,長相還是過得去的,感興趣的小夥伴可以 Google 一下。知道為什麼 Redis 的預設端口是 6379 嗎?

據說是手機鍵盤上“MERZ”的位置決定的,小夥伴們可以打開自己手機上九宮格鍵盤感受一下。“MERZ”是什麼意思呢?據說是“愚蠢”的意思。這?是不是感覺程式員的生活中還是有蠻多神秘色彩的?

02、安裝 Redis

Redis 針對不同的作業系統有不同的安裝方式,我們這篇入門的文章就以 Windows 為例吧。

下載下傳位址如下:

https://github.com/MicrosoftArchive/redis/releases

Windows 最新的版本是 3.2.100。從下圖中可以看得出,Redis 的體積非常的輕量級,還不到 6 M。體積越小,讓我感覺 Redis 越牛逼,你是不是也有這種感覺?

面試官說我離高薪 offer 隻差一個Redis入門,他是認真的(1)

有兩種安裝方式,第一種是 msi 的方式,輕按兩下運作後安裝;第二種是免安裝,綠色版,隻需要把 zip 包解壓就可以了。

面試官說我離高薪 offer 隻差一個Redis入門,他是認真的(1)

裡面有一份英文版的文檔——Windows Service Documentation.docx,教我們如何安裝 Redis 服務、如何啟動、如何關閉,以及如何使用自定義端口啟動服務。

打開指令行,進入到目前解壓後的目錄,輸入啟動指令:

redis-server redis.windows.conf

然後你就會看到 Redis 啟動後的歡迎畫面,左邊這個盒子感覺好有藝術感啊!有小夥伴知道是怎麼生成的嗎?

面試官說我離高薪 offer 隻差一個Redis入門,他是認真的(1)

還有一些其他的提示資訊:

Redis 目前的版本号為 3.2.100

端口是 6379

程序 ID,也就是 PID 為 12636

Redis 官方位址為:

http://redis.io

那如何停止服務呢?可以直接按下 Ctrl+C 組合鍵——粗暴、壁咚(當然可以直接點右上角的叉号)。

PS:本來想用 Linux 版或者 OSX 版的,怕入門的小夥伴沒有環境。後面可以整一個。

03、Redis 的資料結構

Redis 有 5 種基礎資料結構,String、Hash、List、Set、SortedSet,也是學 Redis 必須掌握的。除此之外,還有 HyperLogLog、Geo、Pub/Sub,算是進階資料結構了。我們這篇入門的文章就以 String 為例吧。

String 結構使用非常廣泛,比如說把使用者的登陸資訊轉成 JSON 字元串後緩存起來,等需要取出的時候再反序列化一次。

小夥伴們應該都知道,Java 的 String 是不可變的,無法修改。Redis 的 String 是動态的,可以修改的,兩者不同哦。關于 Redis 的 String 結構,我覺得老錢的 Redis 教程上講得非常明白,大家一起拜讀下。

面試官說我離高薪 offer 隻差一個Redis入門,他是認真的(1)

Redis 的 String 在内部結構實作上類似于 Java 的 ArrayList,采用預配置設定備援空間的方式來減少記憶體的頻繁配置設定。如上圖所示,目前字元串實際配置設定的空間為 capacity,一般高于實際的字元串長度 len。當字元串長度小于 1M 時,擴容是對現有空間的成倍增長;如果長度超過 1M 時,擴容一次隻會多增加 1M 的空間。最大長度為 512M。