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多億)。