1. 程式人生 > >redis初步認識

redis初步認識

redis實際應用場景:

Redis在很多方面與其他資料庫解決方案不同:它使用記憶體提供主儲存支援,而僅使用硬碟做永續性的儲存;它的資料模型非常獨特,用的是單執行緒。另一個大區別在於,你可以在開發環境中使用Redis的功能,但卻不需要轉到Redis。

轉向Redis當然也是可取的,許多開發者從一開始就把Redis作為首選資料庫;但設想如果你的開發環境已經搭建好,應用已經在上面運行了,那麼更換資料庫框架顯然不那麼容易。另外在一些需要大容量資料集的應用,Redis也並不適合,因為它的資料集不會超過系統可用的記憶體。所以如果你有大資料應用,而且主要是讀取訪問模式,那麼Redis並不是正確的選擇。

        然而我喜歡Redis的一點就是你可以把它融入到你的系統中來,這就能夠解決很多問題,比如那些你現有的資料庫處理起來感到緩慢的任務。這些你就可以通過Redis來進行優化,或者為應用建立些新的功能。



redis是一個高效能的key-value資料庫

Redis 與其他 key - value 快取產品有以下三個特點:

  • Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用。
  • Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
  • Redis支援資料的備份,即master-slave模式的資料備份。
  • 效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。

  • 豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。

  • 原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。

  • 豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。

Redis與其他key-value儲存有什麼不同?

  • Redis有著更為複雜的資料結構並且提供對他們的原子性操作,這是一個不同於其他資料庫的進化路徑。Redis的資料型別都是基於基本資料結構的同時對程式設計師透明,無需進行額外的抽象。
  • Redis執行在記憶體中但是可以持久化到磁碟,所以在對不同資料集進行高速讀寫時需要權衡記憶體,應為資料量不能大於硬體記憶體。在記憶體資料庫方面的另一個優點是, 相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。 同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。

安裝

windows下安裝:

點選下載

選擇一個盤把下載的內容解壓到資料夾中,以我為例E:\redis ,在環境變數中新增變數名rids 變數值E:\redis,並新增到path中%rids%。

開啟cmd命令輸入redis-server.exe,執行結果:

這時候另啟一個cmd視窗,原來的不要關閉,不然就無法訪問服務端了。

切換到redis目錄下執行 redis-cli.exe -h 127.0.0.1 -p 6379

設定鍵值對 set myKey abc

取出鍵值對 get myKey

如圖:

配置:

Redis 的配置檔案位於 Redis 安裝目錄下,檔名為 redis.conf

檢視配置: 可以通過 CONFIG 命令檢視或設定配置項

                   指令:CONFIG GET*可以獲取所有的配置資訊

修改配置:通過修改 redis.conf 檔案或使用CONFIG set 命令來修改配置。

                 如指令:CONFIG SET loglevel "notice"

redis.conf 配置項說明如下:

1. Redis預設不是以守護程序的方式執行,可以通過該配置項修改,使用yes啟用守護程序

    daemonize no

2. 當Redis以守護程序方式執行時,Redis預設會把pid寫入/var/run/redis.pid檔案,可以通過pidfile指定

    pidfile /var/run/redis.pid

3. 指定Redis監聽埠,預設埠為6379,作者在自己的一篇博文中解釋了為什麼選用6379作為預設埠,因為6379在手機按鍵上MERZ對應的號碼,而MERZ取自義大利歌女Alessia Merz的名字

    port 6379

4. 繫結的主機地址

    bind 127.0.0.1

5.當 客戶端閒置多長時間後關閉連線,如果指定為0,表示關閉該功能

    timeout 300

6. 指定日誌記錄級別,Redis總共支援四個級別:debug、verbose、notice、warning,預設為verbose

    loglevel verbose

7. 日誌記錄方式,預設為標準輸出,如果配置Redis為守護程序方式執行,而這裡又配置為日誌記錄方式為標準輸出,則日誌將會發送給/dev/null

logfile stdout

redis資料型別:

string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字串)

string是redis最基本的型別,你可以理解成與Memcached一模一樣的型別,一個key對應一個value。

string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的物件 。

string型別是Redis最基本的資料型別,一個鍵最大能儲存512MB

例項:

Hash(雜湊)

Redis hash 是一個鍵值對集合。

Redis hash是一個string型別的field和value的對映表,hash特別適合用於儲存物件。

例項:

以上例項中 hash 資料型別儲存了包含使用者指令碼資訊的使用者物件。 例項中我們使用了 Redis HMSET, HGETALL 命令,user:1 為鍵值。

每個 hash 可以儲存 232 - 1 鍵值對(40多億)。