tft每日頭條

 > 科技

 > redis數據結構及場景

redis數據結構及場景

科技 更新时间:2024-12-02 10:41:01

redis數據結構及場景?Redis 是一個開源的,遵守 BSD 協議的内存數據結構存儲,常用作數據庫、緩存和消息代理Redis相比MongoDB提供了更多的數據結構,如:字符串,哈希,列表,集合,排序集合範圍查詢,位圖,超對數,地理空間索引和流等,下面我們就來聊聊關于redis數據結構及場景?接下來我們就一起去了解一下吧!

redis數據結構及場景(Redis常用數據結構)1

redis數據結構及場景

Redis介紹

Redis 是一個開源的,遵守 BSD 協議的内存數據結構存儲,常用作數據庫、緩存和消息代理。Redis相比MongoDB提供了更多的數據結構,如:字符串,哈希,列表,集合,排序集合範圍查詢,位圖,超對數,地理空間索引和流等。

常用數據結構
  • String:這是最簡單的類型,就是普通的set和get,做簡單的KV緩存,string類型使用最簡單,也最廣泛,使用時候盡量不要直接存儲JSON格式,因為會浪費大量内存空間,可以使用ProtoBuf或者ProtoStuff格式壓縮并用Base64處理後再存儲,會節約非常多空間。

使用場景:高并發大流量下的緩存,一般Key-Value類型都可以使用,對象存儲壓縮後存儲。

  • Hash:類似 map 的一種結構,這個一般就是可以将結構化的數據,比如一個對象(前提是這個對象沒嵌套其他的對象)給緩存在 redis 裡,然後每次讀寫緩存的時候,可以操作 hash 裡的某個字段。

使用場景:用戶信息、電商購物車商品存儲和優惠券列表。

  • List:有序列表,通過 list 存儲一些列表型的數據結構。通過 lrange 命令,讀取某個閉區間内的元素,可以基于 list 實現分頁查詢,基于 redis 實現簡單的高性能分頁。

使用場景:類似粉絲列表、文章的評論列表、内容列表。

  • Set:無序集合,存儲string類型元素,自動去重。直接基于 set 将系統裡需要去重的數據扔進去,自動就給去重了。另外,單台服務器直接在JVM内存用HashSet就可以去重,如果某個系統部署在多台機器上,就可以用Redis的set對數據快速的全局去重。集合是通過哈希表實現的,所以添加,删除,查找的複雜度都是 O(1)。集合中最大的成員數為 2^32-1( 4294967295 ) , 即可存儲 40 多億個成員。

使用場景:對數據全局去重、兩個列表交集并集和全集的計算、如:求兩個博主的共同粉絲列表。

  • Sortedset:有序集合和無序集合一樣也是 string 類型元素的集合,且不允許重複的元素。不同的是每個元素都會關聯一個 double 類型的分數。Redis 正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數 ( score ) 卻可以重複。

使用場景:熱點新聞、微博熱點、音樂排行、TopN需要排名的場景等。

  • GeoHash:地理信息,存儲地圖上地标的經緯度信息,可以根據經緯度和半徑畫圈搜索地标,如:搜索酒店、餐廳、地點、打車等需要使用地理位置畫圈的功能。後續會專門介紹。
  • HyperLogLog:是用來做基數統計的算法,HyperLogLog 的優點是,在輸入元素的數量或者體積非常大時,計算基數所需的空間總是固定 的、并且是很小的。在 Redis 裡面,每個 HyperLogLog 鍵隻需要花費12 KB 内存,就可以計算出接近 2^64 個不同元素的基 數。這和計算基數時,元素越多耗費内存就越多的集合形成鮮明對比。
  • BitMap:位圖,就是字節數組(byte array),用二進制表示,隻有 0 和 1 兩個數字,它用每一個二進制位來存放或者标記某個元素對應的值。通常是用來判斷某個數據存不存在的,因為是用bit為單位來存儲所以Bitmap本身會極大的節省儲存空間。

使用場景:高并發時的用戶簽到、在線狀态、獨立統計等。

Redis常用網址

Redis 官網:https://redis.io/

Redis 在線測試:http://try.redis.io/

Redis 命令手冊:https://redis.io/commands


覺得有用就收藏分享,關注我更多有價值的文章會第一時間推薦給你![玫瑰][玫瑰][玫瑰]

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved