版本:2.9redis
支持的數據類型:算法
Redis 利用原生的 c 字符串進行了一次封裝。封裝的字符串叫作簡單動態字符串:SDS(simple dynamic string)
Redis 使用的簡單動態字符串比 c 語言原生的字符串有如下優勢:數據庫
鏈表做爲最經常使用的數據結構之一,在 redis 中的使用場景是不少的,其中包括:數組
Redis 中鏈表的幾個特性:緩存
字典又叫符號表,在 PHP 中叫關聯數組,在 JAVA 中叫映射(map),在 Python 中叫字典(dict)。別管這麼多叫法,字典就是一種保存鍵值對的一種數據結構。安全
Redis 使用 c 語言構建了本身的字典實現。hash 算法使用的是 murmurhash3 算法。遇到鍵的 hash 值衝突使用的解決方法是鏈地址法。當須要擴展時,Redis 利用兩個哈希表進行漸進式的 rehash。服務器
哈希表內部會經過公式計算一個負載因子。公式爲:數據結構
load_factor=ht[0].used/ht[0].Size
擴展條件:函數
收縮條件:負載因子小於 0.1指針
跳躍表的結構:
跳躍表是一種對標平衡樹的一種數據結構。可是比平衡樹更簡單、更快速、使用更少空間。因此通常都會使用跳躍表。
跳躍表在 Redis 中的使用場景暫時僅限於實現有序集合。
跳躍表的實現參見:http://blog.jobbole.com/111731/
整數集合的使用場景爲元素很少且只包含整數元素的集合。
使用 c 數組實現。
壓縮列表是 Redis 爲了節省內存實現的。當列表鍵和哈希鍵的項比較少,而且存儲的值比較小時,會使用壓縮列表節省內存。