欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis五大基本數(shù)據(jù)類型及對應(yīng)使用場景總結(jié)

 更新時間:2023年08月24日 09:51:17   作者:我有一顆五葉草  
Redis有五種基本數(shù)據(jù)類型,分別是字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted?Set),這些基本數(shù)據(jù)類型使得Redis具備了豐富的數(shù)據(jù)結(jié)構(gòu)和功能,適用于各種不同的應(yīng)用場景,本文就給大家詳細的介紹一下這五大類型

一 什么是NoSQL?

Nosql = not only sql(不僅僅是SQL)

關(guān)系型數(shù)據(jù)庫:列+行,同一個表下數(shù)據(jù)的結(jié)構(gòu)是一樣的。

非關(guān)系型數(shù)據(jù)庫:數(shù)據(jù)存儲沒有固定的格式,并且可以進行橫向擴展。

NoSQL泛指非關(guān)系型數(shù)據(jù)庫,隨著web2.0互聯(lián)網(wǎng)的誕生,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫很難對付web2.0大數(shù)據(jù)時代!尤其是超大規(guī)模的高并發(fā)的社區(qū),暴露出來很多難以克服的問題,NoSQL在當(dāng)今大數(shù)據(jù)環(huán)境下發(fā)展的十分迅速,Redis是發(fā)展最快的。

傳統(tǒng)RDBMS和NoSQL

RDBMS

  • 組織化結(jié)構(gòu)
  • 固定SQL
  • 數(shù)據(jù)和關(guān)系都存在單獨的表中(行列)
  • DML(數(shù)據(jù)操作語言)、DDL(數(shù)據(jù)定義語言)等
  • 嚴格的一致性(ACID): 原子性、一致性、隔離性、持久性
  • 基礎(chǔ)的事務(wù)

NoSQL

  • 不僅僅是數(shù)據(jù)
  • 沒有固定查詢語言
  • 鍵值對存儲(redis)、列存儲(HBase)、文檔存儲(MongoDB)、圖形數(shù)據(jù)庫(不是存圖形,放的是關(guān)系)(Neo4j)
  • 最終一致性(BASE):基本可用、軟狀態(tài)/柔性事務(wù)、最終一致性

二 redis是什么?

Redis = Remote Dictionary Server,即遠程字典服務(wù)。

是一個開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。

與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。

三 redis五大基本類型

Redis是一個開源,內(nèi)存存儲的數(shù)據(jù)結(jié)構(gòu)服務(wù)器,可用作數(shù)據(jù)庫,高速緩存和消息隊列代理。它支持字符串、哈希表、列表、集合、有序集合,位圖,hyperloglogs等數(shù)據(jù)類型。內(nèi)置復(fù)制、Lua腳本、LRU收回、事務(wù)以及不同級別磁盤持久化功能,同時通過Redis Sentinel提供高可用,通過Redis Cluster提供自動分區(qū)。

由于redis類型大家很熟悉,且網(wǎng)上命令使用介紹很多,下面重點介紹五大基本類型的底層數(shù)據(jù)結(jié)構(gòu)與應(yīng)用場景,以便當(dāng)開發(fā)時,可以熟練使用redis。

1 String(字符串)

1.String類型是redis的最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),也是最經(jīng)常使用到的類型。 而且其他的四種類型多多少少都是在字符串類型的基礎(chǔ)上構(gòu)建的,所以String類型是redis的基礎(chǔ)。

2.String 類型的值最大能存儲 512MB,這里的String類型可以是簡單字符串、 復(fù)雜的xml/json的字符串、二進制圖像或者音頻的字符串、以及可以是數(shù)字的字符串

應(yīng)用場景

1、緩存功能:String字符串是最常用的數(shù)據(jù)類型,不僅僅是redis,各個語言都是最基本類型,因此,利用redis作為緩存,配合其它數(shù)據(jù)庫作為存儲層,利用redis支持高并發(fā)的特點,可以大大加快系統(tǒng)的讀寫速度、以及降低后端數(shù)據(jù)庫的壓力。

2、計數(shù)器:許多系統(tǒng)都會使用redis作為系統(tǒng)的實時計數(shù)器,可以快速實現(xiàn)計數(shù)和查詢的功能。而且最終的數(shù)據(jù)結(jié)果可以按照特定的時間落地到數(shù)據(jù)庫或者其它存儲介質(zhì)當(dāng)中進行永久保存。

3、統(tǒng)計多單位的數(shù)量:eg,uid:gongming count:0 根據(jù)不同的uid更新count數(shù)量。

4、共享用戶session:用戶重新刷新一次界面,可能需要訪問一下數(shù)據(jù)進行重新登錄,或者訪問頁面緩存cookie,這兩種方式做有一定弊端,1)每次都重新登錄效率低下 2)cookie保存在客戶端,有安全隱患。這時可以利用redis將用戶的session集中管理,在這種模式只需要保證redis的高可用,每次用戶session的更新和獲取都可以快速完成。大大提高效率。

2 List(列表)

1.list類型是用來存儲多個有序的字符串的,列表當(dāng)中的每一個字符看做一個元素
2.一個列表當(dāng)中可以存儲有一個或者多個元素,redis的list支持存儲2^32次方-1個元素。
3.redis可以從列表的兩端進行插入(pubsh)和彈出(pop)元素,支持讀取指定范圍的元素集, 或者讀取指定下標的元素等操作。redis列表是一種比較靈活的鏈表數(shù)據(jù)結(jié)構(gòu),它可以充當(dāng)隊列或者棧的角色。
4.redis列表是鏈表型的數(shù)據(jù)結(jié)構(gòu),所以它的元素是有序的,而且列表內(nèi)的元素是可以重復(fù)的。 意味著它可以根據(jù)鏈表的下標獲取指定的元素和某個范圍內(nèi)的元素集。

應(yīng)用場景

1、消息隊列:reids的鏈表結(jié)構(gòu),可以輕松實現(xiàn)阻塞隊列,可以使用左進右出的命令組成來完成隊列的設(shè)計。比如:數(shù)據(jù)的生產(chǎn)者可以通過Lpush命令從左邊插入數(shù)據(jù),多個數(shù)據(jù)消費者,可以使用BRpop命令阻塞的“搶”列表尾部的數(shù)據(jù)。

2、文章列表或者數(shù)據(jù)分頁展示的應(yīng)用。比如,我們常用的博客網(wǎng)站的文章列表,當(dāng)用戶量越來越多時,而且每一個用戶都有自己的文章列表,而且當(dāng)文章多時,都需要分頁展示,這時可以考慮使用redis的列表,列表不但有序同時還支持按照范圍內(nèi)獲取元素,可以完美解決分頁查詢功能。大大提高查詢效率。

3 Set(集合)

1.redis集合(set)類型和list列表類型類似,都可以用來存儲多個字符串元素的集合。
2.但是和list不同的是set集合當(dāng)中不允許重復(fù)的元素。而且set集合當(dāng)中元素是沒有順序的,不存在元素下標。
3.redis的set類型是使用哈希表構(gòu)造的,因此復(fù)雜度是O(1),它支持集合內(nèi)的增刪改查, 并且支持多個集合間的交集、并集、差集操作??梢岳眠@些集合操作,解決程序開發(fā)過程當(dāng)中很多數(shù)據(jù)集合間的問題。

應(yīng)用場景

1、標簽:比如我們博客網(wǎng)站常常使用到的興趣標簽,把一個個有著相同愛好,關(guān)注類似內(nèi)容的用戶利用一個標簽把他們進行歸并。

2、共同好友功能,共同喜好,或者可以引申到二度好友之類的擴展應(yīng)用。

3、統(tǒng)計網(wǎng)站的獨立IP。利用set集合當(dāng)中元素不唯一性,可以快速實時統(tǒng)計訪問網(wǎng)站的獨立IP。

數(shù)據(jù)結(jié)構(gòu)

set的底層結(jié)構(gòu)相對復(fù)雜寫,使用了intset和hashtable兩種數(shù)據(jù)結(jié)構(gòu)存儲,intset可以理解為數(shù)組。

4 sorted set(有序集合)

redis有序集合也是集合類型的一部分,所以它保留了集合中元素不能重復(fù)的特性,但是不同的是,有序集合給每個元素多設(shè)置了一個分數(shù)。

redis有序集合也是集合類型的一部分,所以它保留了集合中元素不能重復(fù)的特性,但是不同的是,有序集合給每個元素多設(shè)置了一個分數(shù),利用該分數(shù)作為排序的依據(jù)。

應(yīng)用場景

1、 排行榜:有序集合經(jīng)典使用場景。例如視頻網(wǎng)站需要對用戶上傳的視頻做排行榜,榜單維護可能是多方面:按照時間、按照播放量、按照獲得的贊數(shù)等。

2、用Sorted Sets來做帶權(quán)重的隊列,比如普通消息的score為1,重要消息的score為2,然后工作線程可以選擇按score的倒序來獲取工作任務(wù)。讓重要的任務(wù)優(yōu)先執(zhí)行。

5 hash(哈希)

Redis hash數(shù)據(jù)結(jié)構(gòu) 是一個鍵值對(key-value)集合,它是一個 string 類型的 field 和 value 的映射表,redis本身就是一個key-value型數(shù)據(jù)庫,因此hash數(shù)據(jù)結(jié)構(gòu)相當(dāng)于在value中又套了一層key-value型數(shù)據(jù)。所以redis中hash數(shù)據(jù)結(jié)構(gòu)特別適合存儲關(guān)系型對象

應(yīng)用場景

1、由于hash數(shù)據(jù)類型的key-value的特性,用來存儲關(guān)系型數(shù)據(jù)庫中表記錄,是redis中哈希類型最常用的場景。一條記錄作為一個key-value,把每列屬性值對應(yīng)成field-value存儲在哈希表當(dāng)中,然后通過key值來區(qū)分表當(dāng)中的主鍵。

2、經(jīng)常被用來存儲用戶相關(guān)信息。優(yōu)化用戶信息的獲取,不需要重復(fù)從數(shù)據(jù)庫當(dāng)中讀取,提高系統(tǒng)性能。

以上就是Redis五大基本數(shù)據(jù)類型及對應(yīng)使用場景總結(jié)的詳細內(nèi)容,更多關(guān)于Redis五大基本數(shù)據(jù)類型的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Redis分布式鎖如何實現(xiàn)續(xù)期

    Redis分布式鎖如何實現(xiàn)續(xù)期

    這篇文章主要介紹了Redis分布式鎖如何實現(xiàn)續(xù)期的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 一步步教會你redis如何配置密碼

    一步步教會你redis如何配置密碼

    Redis的配置文件中可以設(shè)置密碼來保護訪問,下面這篇文章主要給大家介紹了關(guān)于redis如何配置密碼的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • 為何Redis使用跳表而非紅黑樹實現(xiàn)SortedSet

    為何Redis使用跳表而非紅黑樹實現(xiàn)SortedSet

    本篇文章主要介紹了為何Redis使用跳表而非紅黑樹實現(xiàn)SortedSet,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解如何使用Redis實現(xiàn)分布式鎖

    詳解如何使用Redis實現(xiàn)分布式鎖

    Redis 作為一個獨立的三方系統(tǒng),其天生的優(yōu)勢就是可以作為一個分布式系統(tǒng)來使用,因此使用 Redis 實現(xiàn)的鎖都是分布式鎖,所以本文就給大家講講如何使用Redis實現(xiàn)分布式鎖,感興趣的小伙伴跟著小編來看看吧
    2023-08-08
  • Redis鎖完美解決高并發(fā)秒殺問題

    Redis鎖完美解決高并發(fā)秒殺問題

    本文主要介紹了Redis鎖完美解決高并發(fā)秒殺問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 使用Redis實現(xiàn)向量相似度搜索

    使用Redis實現(xiàn)向量相似度搜索

    在自然語言處理領(lǐng)域,有一個常見且重要的任務(wù)就是文本相似度搜索,所以本文為大家介紹一下如何利用Redis實現(xiàn)向量相似度搜索,解決文本、圖像和音頻之間的相似度匹配問題,需要的可以了解下
    2023-07-07
  • windows下通過批處理腳本啟動redis的操作

    windows下通過批處理腳本啟動redis的操作

    本文主要給大家介紹了windows下通過批處理腳本啟動redis的操作,windows下redis啟動,需要進入redis安裝目錄,然后shift+右鍵,選擇“在此處打開命令窗口”,然后輸入redis-server.exe redis.conf,就可以啟動redis了,文中有詳細的圖文參考,感興趣的朋友可以參考下
    2023-12-12
  • Redis高并發(fā)問題的解決方法

    Redis高并發(fā)問題的解決方法

    這篇文章主要介紹了Redis高并發(fā)問題的解決辦法,具有很好的參考價值,感興趣的小伙伴們可以參考一下,具體如下:
    2018-05-05
  • Redis高效查詢大數(shù)據(jù)的實踐與優(yōu)化詳細指南

    Redis高效查詢大數(shù)據(jù)的實踐與優(yōu)化詳細指南

    Redis 是一種高性能的鍵值存儲數(shù)據(jù)庫,廣泛應(yīng)用于緩存,排行榜,計數(shù)器等場景,本文將圍繞如何高效查詢Redis中滿足條件的數(shù)據(jù)展開討論,感興趣的小伙伴可以了解下
    2025-04-04
  • 虛擬機linux安裝redis實現(xiàn)過程解析

    虛擬機linux安裝redis實現(xiàn)過程解析

    這篇文章主要介紹了虛擬機linux安裝redis實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08

最新評論