1.概述
redis是乙個開源的,基於記憶體的結構化(key-value)資料儲存媒介,可以作為資料庫、快取服務或訊息服務使用,redis支援多種資料結構,包括字串(string)、雜湊表(hash)、列表(list)、集合(set)、有序集合(sortedset)、位圖(bitmap)、hyperloglogs等。
redis具備lru淘汰、事務實現、以及不同級別的硬碟持久化等能力,並且支援副本集和通過redis sentinel實現的高可用方案,同時還支援通過redis cluster實現的資料自動分片能力。
redis的主要功能都基於單執行緒模型實現,也就是說redis使用乙個執行緒來服務所有的客戶端請求,同時redis採用了非阻塞式io,並精細地優化各種命令的演算法時間複雜度,這些資訊意味著:
2.優缺點
優點:缺點:3.資料型別及常用命令
1.string(字串)
string是redis的基礎資料型別,redis沒有int、float、boolean等資料型別的概念,所有的基本型別在redis中都以string體現
常用命令:
備註:進行incr/decr、incrby/decrby系列命令的value,必須在[-2^63 ~ 2^63 - 1]範圍內。前文提到過,redis採用單執行緒模型,天然是執行緒安全的,這使得incr/decr命令可以非常便利的實現高併發場景下的精確控制
2.hash(雜湊表)
hash即雜湊表,redis的hash和傳統的雜湊表一樣,是一種field-value型的資料結構,可以理解成將hashmap搬入redis。hash非常適合用於表現物件型別的資料,用hash中的field對應物件的field即可。
常用命令:
hgetall:返回指定hash中所有的field-value對。返回結果為陣列,陣列中field和value交替出現。時間複雜度o(n)
hkeys/hvals:返回指定hash中所有的field/value,時間複雜度o(n),
3.list(列表)
redis的list是鏈表型的資料結構,可以使用lpush/rpush/lpop/rpop等命令在list的兩端執行插入元素和彈出元素的操作。雖然list也支援在特定index上插入和讀取元素的功能,但其時間複雜度較高(o(n)),應小心使用。redis的list實際是設計來用於實現佇列,而不是用於實現類似arraylist這樣的列表的。如果你不是想要實現乙個雙端出入的佇列,那麼請盡量不要使用redis的list資料結構。為了更好支援佇列的特性,redis還提供了一系列阻塞式的操作命令,如blpop/brpop等,能夠實現類似於blockingqueue的能力,即在list為空時,阻塞該連線,直到list中有物件可以出隊時再返回
常用命令:
由於redis的list是鍊錶結構的,上述的三個命令的演算法效率較低,需要對list進行遍歷,命令的耗時無法預估,在list長度大的情況下耗時會明顯增加,應謹慎使用。
4.set(集合)
redis set是無序的,不可重複的string集合。
常用命令:
備註:上述幾個命令涉及的計算量大,應謹慎使用,特別是在參與計算的set尺寸不可知的情況下,應嚴格避免使用
5.sortedset(有序集合)
redis sorted set是有序的、不可重複的string集合。sorted set中的每個元素都需要指派乙個分數(score),sorted set會根據score對元素進行公升序排序。如果多個member擁有相同的score,則以字典序進行公升序排序。sorted set非常適合用於實現排名。
常用命令:
6.bitmap和hyperloglog
bitmap在redis中不是一種實際的資料型別,而是一種將string作為bitmap使用的方法。可以理解為將string轉換為bit陣列。使用bitmap來儲存true/false型別的簡單資料極為節省空間。
hyperloglogs是一種主要用於數量統計的資料結構,它和set類似,維護乙個不可重複的string集合,但是hyperloglogs並不維護具體的member內容,只維護member的個數。也就是說,hyperloglogs只能用於計算乙個集合中不重複的元素數量,所以它比set要節省很多記憶體空間。
其他常用命令
redis常用命令 redis筆記一(常用命令)
作為讀寫效能出眾的k v型別資料庫 redis幾乎在現在所有的專案中都會使用。常常用它來共享session,快取資料,或者是用它來實現乙個簡單的鎖。昨天簡單記錄了一下redis的單機版安裝。之後再考慮學習一下reids集群的搭建。今天再寫點簡單的,算是乙個筆記。redis作為key value的非關...
Redis系列 4 常用命令彙總
如果是用apt get或者yum install安裝的redis,可以直接通過下面的命令停止 啟動 重啟redis etc init.d redis server stop etc init.d redis server start etc init.d redis server restart 如...
Redis常用命令
1 keys 返回滿足給定pattern的所有key。例如 keys 返回所有鍵 2 exists 確認乙個key是否存在。例如 exists age 3 del 刪除指定key。例如 del age 4 expire 設定乙個key的過期時間。例如 expire age 100 單位 秒 5 pe...