redis 菜鳥教程筆記摘抄整理
很好的IT教程網站===》菜鳥教程
但是細分太多模組,不太好檢視,決定摘抄整理,方便自己學習~~
redis的各個資料型別應用場景:
型別 | 簡介 | 特性 | 場景 |
---|---|---|---|
String(字串) | 二進位制安全 | 可以包含任何資料,比如jpg圖片或者序列化的物件,一個鍵最大能儲存512M | 隨便儲存呀呀呀哎呀 |
Hash(字典) | 鍵值對集合,即程式語言中的Map型別 | 適合儲存物件,並且可以像資料庫中update一個屬性一樣只修改某一項屬性值(Memcached中需要取出整個字串反序列化成物件修改完再序列化存回去) | 儲存、讀取、修改使用者屬性 |
List(列表) | 連結串列(雙向連結串列) | 增刪快,提供了操作某一段元素的API | 1,最新訊息排行等功能(比如朋友圈的時間線) 2,訊息佇列 |
Set(集合) | 雜湊表實現,元素不重複 | 1、新增、刪除,查詢的複雜度都是O(1) 2、為集合提供了求交集、並集、差集等操作 | 1、共同好友 2、利用唯一性,統計訪問網站的所有獨立ip 3、好友推薦時,根據tag求交集,大於某個閾值就可以推薦 |
Sorted Set(有序集合) | 將Set中的元素增加一個權重引數score,元素按score有序排列 | 資料插入集合時,已經進行天然排序 | 1、排行榜 2、帶權重的訊息佇列 |
PS:注意:Redis支援多個數據庫,並且每個資料庫的資料是隔離的不能共享,並且基於單機才有,如果是叢集就沒有資料庫的概念。
Redis是一個字典結構的儲存伺服器,而實際上一個Redis例項提供了多個用來儲存資料的字典,客戶端可以指定將資料儲存在哪個字典中。這與我們熟知的在一個關係資料庫例項中可以建立多個數據庫類似,所以可以將其中的每個字典都理解成一個獨立的資料庫。
每個資料庫對外都是一個從0開始的遞增數字命名,Redis預設支援16個數據庫(可以通過配置檔案支援更多,無上限),可以通過配置databases來修改這一數字。客戶端與Redis建立連線後會自動選擇0號資料庫,不過可以隨時使用SELECT命令更換資料庫,如要選擇1號資料庫:
redis> SELECT 1
OK
redis [1] > GET foo
(nil)
然而這些以數字命名的資料庫又與我們理解的資料庫有所區別。首先Redis不支援自定義資料庫的名字,每個資料庫都以編號命名,開發者必須自己記錄哪些資料庫儲存了哪些資料。另外Redis也不支援為每個資料庫設定不同的訪問密碼,所以一個客戶端要麼可以訪問全部資料庫,要麼連一個數據庫也沒有許可權訪問。最重要的一點是多個數據庫之間並不是完全隔離的,比如FLUSHALL命令可以清空一個Redis例項中所有資料庫中的資料。綜上所述,這些資料庫更像是一種名稱空間,而不適宜儲存不同應用程式的資料。比如可以使用0號資料庫儲存某個應用生產環境中的資料,使用1號資料庫儲存測試環境中的資料,但不適宜使用0號資料庫儲存A應用的資料而使用1號資料庫B應用的資料,不同的應用應該使用不同的Redis例項儲存資料。由於Redis非常輕量級,一個空Redis例項佔用的內在只有1M左右,所以不用擔心多個Redis例項會額外佔用很多記憶體。
redis的key:
Redis 鍵(key)
Redis 鍵命令用於管理 redis 的鍵。
語法
Redis 鍵命令的基本語法如下:
redis 127.0.0.1:6379> COMMAND KEY_NAME
例項
redis 127.0.0.1:6379> SET runoobkey redis
OK
redis 127.0.0.1:6379> DEL runoobkey
(integer) 1
在以上例項中 DEL 是一個命令, runoobkey 是一個鍵。 如果鍵被刪除成功,命令執行後輸出 (integer) 1,否則將輸出 (integer) 0
Redis keys 命令
下表給出了與 Redis 鍵相關的基本命令:
序號 | 命令及描述 |
---|---|
1 | DEL key 該命令用於在 key 存在時刪除 key。 |
2 | DUMP key 序列化給定 key ,並返回被序列化的值。 |
3 | EXISTS key 檢查給定 key 是否存在。 |
4 | EXPIRE key seconds 為給定 key 設定過期時間,以秒計。 |
5 | EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 類似,都用於為 key 設定過期時間。 不同在於 EXPIREAT 命令接受的時間引數是 UNIX 時間戳(unix timestamp)。 |
6 | PEXPIRE key milliseconds 設定 key 的過期時間以毫秒計。 |
7 | PEXPIREAT key milliseconds-timestamp 設定 key 過期時間的時間戳(unix timestamp) 以毫秒計 |
8 | KEYS pattern 查詢所有符合給定模式( pattern)的 key 。 |
9 | MOVE key db 將當前資料庫的 key 移動到給定的資料庫 db 當中。 |
10 | PERSIST key 移除 key 的過期時間,key 將持久保持。 |
11 | PTTL key 以毫秒為單位返回 key 的剩餘的過期時間。 |
12 | TTL key 以秒為單位,返回給定 key 的剩餘生存時間(TTL, time to live)。 |
13 | RANDOMKEY 從當前資料庫中隨機返回一個 key 。 |
14 | RENAME key newkey 修改 key 的名稱 |
15 | RENAMENX key newkey 僅當 newkey 不存在時,將 key 改名為 newkey 。 |
16 | TYPE key 返回 key 所儲存的值的型別。 |