Redis資料型別概述 官方文件翻譯

2021-10-08 05:21:44 字數 3047 閱讀 3393

官方英文文件:

strings【字串】

乙個字串值最大長度是512mb。

你可以用redis的字串做很多有趣的事情,例如:

1、通過incr命令族,使用字串做自動計數。【incr命令族包含,incr、decr、incrby等】

3、通過getrange、setrange命令,將字串作為乙個可隨機訪問的陣列操作。

4、通過getbit、setbit命令,在乙個小空間內編碼大量資料,或者建立乙個基於redis的布隆過濾器。

lists【鍊錶】

注:lists這個名稱在不同設計的系統裡的含義可能有所區別。例如在python中lists其實是乙個陣列。但是在redis中,lists通過鍊錶實現,這和陣列是有差別的。【這點在redis詳細介紹資料結構的官方文件中有提及】因此,此處譯者不刻意翻譯lists,採用原名稱,大家重在意會。

redis的lists型別是乙個根據插入順序排列的字串列表。redis的list頭尾均可以插入新元素,頭尾也可以對應的稱為左右側。

lpush命令用於在list頭部插入乙個新元素,與之對應的是rpush在尾部插入新元素。當我們對乙個空鍵使用lists相關命令做操作時,會自動建立乙個新的list。如果乙個list的元素均被清空,對應的鍵也會被移除。還有乙個很便捷的語法特性,即,訪問了乙個不存在的鍵和訪問乙個空列表的表現是完全相同的。

list的最多擁有(2^32-1)個元素。【每個list超過400萬個元素】

redis lists的乙個主要特性是,可以以常量的時間複雜度在list的頭尾處執行插入或者刪除操作,及時list中有數百萬個元素。通常來說,list訪問元素是很快的,但是在極端的情況下,它可能很慢。即你嘗試去訪問的元素在乙個很大的list的中間位置,這是乙個時間複雜度為o(n)的操作。

你可以用redis的lists結構做很多有趣的事情,例如:

1、在乙個社交網路中建立乙個時間線模型,使用lpush命令在使用者時間線上新增新元素,然後用lrange命令去檢索最近新增的元素。

2、你可以並用lpsuh和ltrim命令去建立乙個固定最大長度的list,這個list永遠只保留最近的n個元素。

3、列表可以用作訊息傳遞原語,例如,用於建立後台作業的著名的resque ruby庫。

4、你可以利用lists做更多的事情,這個資料型別支援大量的命令,包括像blpop這樣阻塞式的命令。

sets【集合】

redis集合是一組未排序的不重複字串。無論集合內有多少元素,它都可以在o(1)時間內新增、移除或者查詢是否存在元素。

redis集合是絕對不允許重複的成員元素的,即使向集合內多次新增相同元素,最終也只會有乙份被保留。值得一提的是,新增元素並不需要先檢查元素是否存在,然後再新增,這樣的額外操作。

redis集合很有趣的一點是,它在服務端上便提供命令,支援對已有的集合做集合相關的操作。例如求並集、交集、差集等等,並且這些操作均耗時很短。

redis集合支援的最大成員數量是(2^32-1)個。

你可以使用redis集合做很多有趣的事情,例如:

2、redis集合可以很友好地展現關係。你可以建立乙個標籤系統,並將redis的每乙個集合對應上乙個標籤。然後你可以使用sadd命令,根據物件id上的標籤,將物件新增到對應集合中。如果你想所有物件的id在同一時間都有三個不同的標籤,使用sinter命令即可。

3、你可以使用spop和srandmember命令去獲得集合中的乙個隨機元素。

hashes【雜湊】

redis雜湊記錄了字元域和字元值的對映關係,他們是用來表示物件的最好的資料型別。例如,乙個使用者含有姓名、暱稱、年齡等等資訊域。

乙個只有少量域的hash資料,只占用極少量空間【這裡的少量意味著100個域左右】。所以你可以在乙個小redis例項中,儲存數以百萬計的物件。

hashes主要被用於表示物件,但是它也可以儲存很多元素,因而你可以使用hashes結構完成許多其他任務。

每乙個hash可以儲存(2^32-1)個域值對。

sorted sets【有序集合】

redis的有序集合和redis集合很類似,它們都不允許存在重複的字串。它們之間的不同主要在有序集合的每乙個成員都關聯著乙個score,這個score被用於排序。以score為依據,成員將被自低而高的排序。雖然成員是唯一的,但是scores可以重複。【score是乙個浮點數】

你可以在有序集合中快速的新增、移除或者更新元素。【執行時間與成員數量成對數關係】既然元素是按正向順序排列的,所以你可以通過score或者位置快速獲取範圍內的元素。訪問有序集合的中間元素同樣很快,你可以使用有序集合,把它作為乙個不含重複元素的list。通過這種方式你可以快速的訪問所有你想要的,例如:有序的元素,存在性檢查,快速訪問中間元素!

簡而言之,你可以通過有序集合完成很多在其他資料庫裡很難建模的任務。

有序集合可以做:

1、為乙個大型網路遊戲設定排行榜,每當乙個新分數被提交,你可以使用zadd命令新增元素。你很容易通過zrange命令獲得頂部使用者的資訊。你還可以使用zrank命令,給定乙個使用者姓名,然後返回他的排名。結合zrank和zrange命令,你可以向使用者展示與他相近分數的使用者。

2、有序集合通常用於索引儲存在redis中的資料。例如,如果您有許多表示使用者的hashes,您可以使用乙個有序集合,其中的元素以使用者的年齡作為score,以使用者的id作為值。這樣可以用乙個給定的年齡快速的檢索到所有使用者,通過zrangebyscore命令。

有序集合可能是redis裡最高端的資料型別了,所以花一些事件去熟悉所有的有序集合命令,去發現你可以利用redis完成的事情。

bitmaps和hyperloglogs【點陣圖和hyperloglogs】

redis支援點陣圖和hyperloglogs,兩者都是基於字串這個基本資料型別的,但是均有他們獨特的語法。

*************************=小可愛分界線******************************====

最近在讀redis的官方文件,順手翻譯了下來。少部分地方採用了意譯。

如果有翻譯不恰當的地方,敬請斧正ヾ(๑╹◡╹)ノ"

資料型別概述

j ascript的資料型別共有6種。es6又新增了第7種symbol型別的值 j ascript有三種方法,可以確定乙個值到底是什麼型別。typeof 123 number typeof 123 string typeof false boolean函式返回function function f ...

redis資料型別

redis對比與memcached 最大的優勢就是支援更多靈活的資料結構,豐富的資料操作 redis現支援的資料型別有 字串,列表,集合,雜湊,有序集合 1.字串 普通資料型別 2.列表 簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部 左邊 或者尾部 右邊 適用於 對資料頭尾操作頻...

Redis 資料型別

redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 string是redis最基本的型別,你可以理解成與memcached一模一樣的型別,乙個key對應乙個value。string型別是二進位制安全的。意思是red...