# 數據類型
[TOC]
Redis 5種數據類型
> `string`(字符串),`hash`(哈希),`list`(列表),`set`(集合)及`zset`(sorted set:有序集合)
> Redis 在 2.8.9 版本添加了 HyperLogLog 結構。
## string (字符串)
* 一個`key` 對應一個 `value`
* 二進制安全,可以包含任何數據;例如: 圖片或者序列化的對象
* 一個鍵最大能存儲512MB
## hash(哈希)
* `key => value` 鍵值對
* 一個 string 類型的 field 和 value 的映射表
* 每個 hash 可以存儲 2^32 - 1 鍵值對(40多億)
## list(列表)
* 簡單的字符串列表,按照插入順序排序
* 列表最多可存儲 2^32 - 1 元素 (4294967295, 每個列表可存儲40多億)。
## set(集合)
* 不允許重復的數據出現
* Redis 的 Set 是 string 類型的無序集合。
* 集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。
* 集合中最大的成員數為 2^32 - 1 (4294967295, 每個集合可存儲40多億個成員)。
## zset(sorted set : 有序集合)
* 和Set一樣也是string類型元素的集合,且不允許重復的成員。
* 每個元素都會關聯一個double類型的分數
* 成員是唯一的,但分數(score)卻可以重復。
* 集合是通過哈希表實現的,所以添加,刪除,查找的復雜度都是 O(1)。
* 集合中最大的成員數為 2^32 - 1 (4294967295, 每個集合可存儲40多億個成員)。
## HyperLogLog
* 用來做基數統計的算法
* 輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定 的、并且是很小的。
* 每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 2^64 個不同元素的基 數
* HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以 HyperLogLog 不能像集合那樣,返回輸入的各個元素
> 基數 :
> 比如數據集 {2, 4, 6, 7, 5, 7, 8}, 那么這個數據集的基數集為 {2, 4, 6 ,7,5, 8}, 基數(不重復元素)為6。 基數估計就是在誤差可接受的范圍內,快速計算基數。
- 簡介
- PHP
- 字符串函數
- 數組函數
- 正則
- 加密函數
- 面向對象
- 關鍵字
- 設計模式
- 魔術方法
- 機制擴展
- 會話機制
- PHP框架
- laravel
- 問題
- swoole
- easyswoole
- workerman
- 數據庫
- Sphinx
- MongoDB
- MemCache
- Redis
- 基礎操作
- 數據類型
- 持久化
- 分布式鎖
- 內存模型
- redis高級特性
- MySql
- 基礎操作
- 數據類型
- 數據表引擎
- 鎖機制
- 事務處理
- 存儲過程
- 觸發器
- 索引
- 關聯查詢
- 分析SQL語句-優化查詢
- 分區分表
- 主從復制
- MySql安全性
- 網絡協議
- HTTP
- header詳解
- 狀態碼
- nginx-配置
- 邏輯算法
- 時間和空間復雜度
- 常見算法
- 數據結構
- 核心
- 進程、線程、協程
- 存儲容量-計量單位
- 開發軟件及配置
- 版本控制器
- Git
- Fidder
- Fidder-Android7
- 自動化部署
- Jenkins
- supervisor
- Elasticsearch
- LogStash
- RabbitMQ
- AB測試
- JAVA-JDK
- FileBeat
- PhpStorm
- Composer
- Linux
- API安全
- 高并發及大流量相關概念
- 網站優化
- WEB
- Electron