Redis使用總結

NoSQL

1.1為什么要用NoSQL

面對現在用戶數據的急劇上升,我們需要對這些用戶數據進行挖掘,傳統的關系型數據庫已經不適合這些 應用了.Nosql?的發展可以很了的處理這些大的數據.

1.2什么是NoSQL

Not???Only???Sql->NoSQL(不僅僅是SQL)

非關系型數據庫.隨著web2.0 網站的興起,傳統的關系型數據庫已經無法面對web2.0,?特別是大規模和高?并發的SNS?類型的web2.0 純動態網站了,暴露了許多難以克服的困難.而非關系型數據庫則由于其本身的?特點得到了迅速的發展.NoSQL??數據庫的產生就是為了解決在規模數據集合多種數據種類帶來的挑戰,尤?其是大數據應用難題.包括超大規模數據的存儲.

面對每天用戶大量的數據,有些數據的類型不需要固定的模式,無需多余的操作就可以進行橫向擴展

1.3?NoSQL能干什么

1:?易擴展

2:?大數據量高性能

3:?多樣靈活的數據模型

4:傳統RDBMS?VS?NOSQL

1:易擴展

NoSQL?數據庫種類繁多,但是一個共同的特點都是去掉關系數據庫的關系型我.

數據之間無關系,這樣就非常容易擴展,也無形之間在架構的層面上帶來了可擴展的能力.

2:大數據量高性能

NoSQL數據庫都具有非常高的讀寫性能,尤其在大數據量下,同樣表現優秀.這得益于他的無關系性,數據庫?的結構簡單.

一般MySQL使用Query??Cache,每次表的更新Cache就失效,是一種大粒度的Cache,在針對web2.0 的交互?頻繁的應用,Cache?性能不高,而NoSQL?Cache 是記錄級的.是一種細粒度的Cache,所以NoSQL?在這個層?面上來說就要性能高很多了

3:多樣靈活的數據模型

NoSQL?無需事先為要存儲的數據建立字段.隨時可以存儲自定義的數據格式,而在關系數據庫里.增刪字段?是一件非常麻煩的事情.如果是非常大數據量的表.增加字段簡單就是一個噩夢

4:傳統?RDBMS?VS?NOSQL

RDBMS--> 傳統關系型數據庫.

●高度組織化結構化數據.

●結構化查詢語言(SQL).

●數據和關系都存儲在單獨的表中.

●數據操縱語言,數據定義語言.

●嚴格的一致性.

●基礎事務

NoSQL

●代表著不僅僅是SQL

●沒有聲明性查詢語言

●沒有預訂義的模式

●鍵值對存儲,列存儲,文檔存儲,圖形數據庫

●最終一致性.而非ACID?屬性.

●非結構化和不可預知的數據

?CAP定理

●高性能,高可用,可伸縮性

1.4去哪下

  • 1:Redis

    2:Memcache

    3:Mongdb??(基于分布式文件存儲數據庫,旨在為webAPP提供可擴展的高性能數據存儲解決方案,是一個?介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的)

    高速緩沖-->?Memcache

    一莊多能,數據類型豐富-->Redis

1.5怎么玩

  1. Key-Value
  2. Cache?高速緩沖?
  3. Persistence

1.6?3V3高


?海量?Volume大數據時代的3V:

?多樣?Variety

?實時Velocity?互聯網需求的3高:

VS

???

???

???

3??NoSQL數據模型簡介

聚合模型:

1:KV?鍵值對

2:BSon(類似于JSON)

3:列族(按列存儲數據,最大特點是方便存儲結構化和半結構化數據,方便做數據壓縮,對針對某一列或某幾?列的查詢有非常大的IO?優勢)

4:?

4?NoSQL?DB?四大分類

KV 鍵值(Redis)

優勢:查找速度快

缺點:數據無結構化,通常只被當作字符串或二進制數據

文檔型數據庫(MongoDB)bson????格式比較多

優勢:數據結構要求不嚴格,表結構可變,不需要像關系型數據庫一樣需要預先定義表結構

缺點:查詢性能不高,而且缺乏統一的查詢語法.

列存儲數據庫(Cassandra,HBase) ?分布式文件系統

優勢:查找速度快,可擴展性強,更容易進行分布式擴展

缺點:功能相對局限

圖關系數據庫(Neo4J,InfoGrid)??他不是放圖形的,放的是關系比如朋友圈社交網絡,廣告推薦系統,社交網?絡,推薦系統等,專注于構建關系圖譜

優勢:利用圖結構相關算法,比如最短路徑尋址,N度關系查

缺點:很多時候需要對整個圖做計算才能得出需要的信息而且這種結

新浪:BerkeleyDB+redis

美團:redis+tair

阿里,百度:memcache+redis

5 分布式數據庫CAP?原理

5.1 ACID vs CAP

傳統關系型數據庫-->ACID:

英文

中文

Atomicity

原子性

Consistency

一致性

Isolation

獨立性

Durability

持久性

事務:transaction, ?與現實中的交易很類似.

● ????Atomicity(原子性)

指事務里的所有操作要么都做完,要么都不做.事務成功的條件是事務的所有操作都成功,只要有一個?操作失敗,整個事務就失敗.需要回滾.

·Consistency ???????(一致性)

指數據庫要一直處于一致的狀態,事務的運行不會改變數據庫原本的一致性約束

?????Isolation(獨立性)

指事務之間不會互相影響,如果一個事務要訪問的數據正在被另外一個事務修改,只要另外一個事務 未提交.他所訪問的數據就不受未提交事務的影響.?(比如你正在查看你的銀行賬戶,有人正在給你轉 ?錢,如果這個轉錢的動作未提交,你查的時候是看不到這筆錢的)

?????Durability(持久性)

指事務一旦提交,他所做的修改將會永久的保存在DB?

NoSQL?非關系型數據庫-->ACID:

英文

中文

Consistency

一致性

Availability

可用性

Partition tolerance

分區容錯性

·Consistency ???????(一致性)?數據保持一致

????Availability(可用性)?不能出錯

● ????Partition?????tolerance(分區容錯性)

ACID必須4個條件都滿足,但是NoSQL?只能三選二(上面表格中的三個特性滿足兩個)

5.2?CAP中的3進2

CAP?核心理論:

一個分布式系統不可能同時很好的滿足一致性.可用性和分區容錯性這三個需求,最多滿足兩個?所以,根據該理論將NoSQL分成了三大類

● ??CA原則

單點集群,滿足一致性,可用性的系統,通常在可擴展性上不太強大.

??CP?

滿足一致性.分區容錯性的系統,通常性能不是特別高.

??AP??

滿足可用性,分區容錯性的系統,通常可能對一致性要求低一些.

原則

適用

CA

傳統Oracle數據庫

AP

大多數網站架構的選擇

CP

Redis,Mongodb

數據庫事務一致性需求

很多web?實時系統并不要求嚴格的數據庫事務,對讀一致性的要求很低,有些場合對寫一致性要求并不高, 允許實現最終一致性.

數據庫的寫實時性與讀實時性需求

ACID?來說,插入一條數據之后立刻查詢,是肯定可以讀出來這條數據的.但是對于很多?webAPP ?說,并?不要求這么高的實時性.比方說發一條消息后.過幾秒或十幾秒后.訂閱者才看到這條動態是完全可以接受??.

對復雜的SQL查詢,特別是多表關聯查詢的需求

任何大數據量的webAPP,都非常忌諱多個大表的關聯查詢,以及復雜的數據分析類型的報表查詢,特別是??SNS 類型的網站,從需求以及產品設計角度,就避免了這種情況的產生,往往更多的只是表單的主鍵查詢,以?及表單的簡單條件分頁查詢,SQL?的功能被極大的弱化了.

5.3什么是BASE

BASE?是為了解決關系型數據庫強一致性引起的問題而引起的可用性降低而提出的解決方案.

BASE:

中文

英文

基本可用

Basically Available

軟狀態

Soft?state

最終一致

Eventually?consistent

??

通過讓系統放松對某一時刻數據一致性的要求來換取系統整體伸縮性和性能上改觀,因為在大型系統往?往由于地域分布和極高性能的要求.不可能采用分布式逗我來完成這些指標,要想獲得這些指標,我們必須?采用別的方式完成,于是BASE出現了?。

5.4分布式與集群

分布式:把一個系統不同模塊的服務分別放在不同臺服務器上,通過API進行通信和調用.對外提供服務和組?內協作?.

集群:在多臺服務器上部署相同的服務模塊.通過分頁式調度軟件進行統一的調度.

6?Redis?入門

6.1?Redis是什么

Redis:REmote?????DIctionary?????Server(遠程字典服務器)

完全開源免費,用C 語言編寫,遵守?BSD 協議,是一個高性能的(Key/value)分布式內存數據庫.基于內存運?行.并支持持久化的NoSQL??數據庫.是當前最熱門的?NoSQL??數據庫之一.也被人們稱作:數據結構服務器???

No

Redis特點

1

Resid支持數據的持久化,可以將內存中的數據保持在磁盤中.重啟的時候可以再次加載使用

2

Redis不僅僅支持簡單的Key-Value類型的數據.同時還提供List,set,zset,hash等數據結構的?存儲

3

Resid支持數據的備份,即master-slave模式的數據備份

6.2?Redis能做什么

No

作用

1

內存存儲和持久化:Redis支持異步將內存中的數據寫到硬盤上,同時不影響繼續服務

2

取最新N個數據的操作.如:將最新的10條評論的ID放在Redis的List集合里面

3

模擬類似于HttpSession這種需要設定過期時間的功能

4

發布,訂閱消息系統

5

定時器,計數器

6.3下載

Redis - The Real-time Data Platform

http://www.redis.cn


6.4 安裝

OS:ubuntu18.04???安裝Redis-Server

指令:

sudo???????apt ??????install???????redis-server

安裝Ubuntu?網絡輔助工具

sudo ?apt??????install ?????net-tools

安裝完成通過命令檢查Redis??服務器狀態

netstat ??????-nlt???|grep??????6379

通過命令檢查Redis服務器狀態

sudo?????/etc/init.d/redis-server?????status

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78615.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78615.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78615.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity ML-Agents + VScode 環境搭建 Windows

安裝Unity 先去官網下載Unity Hub,然后安裝在D盤就可以了,你需要手機上安裝一個Unity Connect進行賬號注冊。 詳細的注冊可以參考: https://blog.csdn.net/Dugege007/article/details/128472571 注冊好了以后登入電腦端的Unity Hub&#x…

Linux電源管理(2)_常規的電源管理的基本概念和軟件架構

原文: Linux電源管理(2)_Generic PM之基本概念和軟件架構 1. 前言 Linux系統中那些常規的電源管理手段,包括關機(Power off)、待機(Standby or Hibernate)、重啟(Reboot)等。這些…

機器學習基礎理論 - 分類問題評估指標

幾個定義:混淆矩陣 TP: True Positives, 表示實際為正例且被分類器判定為正例的樣本數FP: False Positives, 表示實際為負例且被分類器判定為正例的樣本數FN: False Negatives, 表示實際為正例但被分類器判定為負例的樣本數TN: True Negatives, 表示實際為負例且被分類…

在線教育系統開發常見問題及解決方案:源碼部署到運營維護

當下,越來越多的教育機構、企業培訓部門以及創業者,選擇開發屬于自己的在線教育系統。然而,從源碼部署到實際運營,整個過程中常常會遇到一系列技術與管理難題。今天,筆者將從在線教育系統源碼維護、運營等幾個方向為大…

RAG(Retrieval-Augmented Generation,檢索增強生成)

RAG(Retrieval-Augmented Generation,檢索增強生成)是一種結合 信息檢索 和 文本生成 的技術,旨在提升大語言模型(LLM)生成內容的準確性和時效性。其核心思想是:先檢索相關知識,再基…

項目實戰 -- 狀態管理

redux基礎 還記得好久好久之前就想要實現的一個功能嗎? 收起側邊欄折疊菜單,沒錯,現在才實現 因為不是父子通信,所以處理起來相對麻煩一點 可以使用狀態樹或者中間人模式 這就需要會redux了 Redux工作流: 異步就…

Go語言之路————指針、結構體、方法

Go語言之路————指針、結構體、方法 前言指針結構體聲明初始化使用組合引用結構體和指針結構體的標簽 方法例子結合結構體總結 前言 我是一名多年Java開發人員,因為工作需要現在要學習go語言,Go語言之路是一個系列,記錄著我從0開始接觸Go…

[創業之路-390]:人力資源 - 社會性生命系統的解構與重構:人的角色嬗變與組織進化論

前言: 人、財、物、信息、機制、流程、制度、方法共同組合了一個持續的消耗資源、持續的價值創造、持續面臨生存與發展、遺傳與變異的社會性生命系統。 "人"是所有社會性生命系統最最基礎性的要素,它彌漫在系統中多維立體空間的不同節點上&am…

JS執行器在UI自動化測試中的應用

前言 在進行UI自動化過程會遇到滾動條下拉、隱藏元素定位、只讀屬性元素的編輯、富文本處理等,此時可以使用JS執行器簡化我們的一些處理操作。 具體應用 JS執行器的使用步驟: 1.先寫個JS腳本,如果需要獲取操作后的值,JS腳本前面…

解析Suna:全球首款開源通用AI智能體

導語: 嘿,哥們兒,最近 AI Agent 這塊兒挺火的,有個叫 Suna 的開源項目冒出來挺快!聽說只用了 3 周就開發出來了,但功能上感覺已經能跟那個商業版的 Manus掰掰手腕了。它能幫你搞定瀏覽器自動化、管文件、爬…

模板方法模式:定義算法骨架的設計模式

模板方法模式:定義算法骨架的設計模式 一、模式核心:模板方法定義算法骨架,具體步驟延遲到子類實現 在軟件開發中,經常會遇到這樣的情況:某個算法的步驟是固定的,但具體步驟的實現可能因不同情況而有所不…

淺談Java 內存管理:棧與堆,垃圾回收

在Java編程世界里,內存管理是一項極為關鍵的技能,它就像程序運行背后的“隱形守護者”,默默影響著程序的性能與穩定性。今天,咱們就來簡單學習一下Java內存管理中的兩大核心要點:棧與堆的內存分配機制,以及…

【WebGL小知識】WebGL平臺上不同Json的比較

今天來總結一下WebGL平臺上不同Json插件的差別,話不多說直接開始。 JsonUtility JsonUtility是Unity自帶的Json解析,無需另外安裝插件。 優點: Unity自帶,兼容性好,WebGL平臺可以使用輕量級,性能較好。 …

4.22tx視頻后臺開發一面

總時長大概在一個小時,主要提問C、操作系統、計網以及數據庫等方面,最后兩個算法編程題。 一上來先介紹項目 Linux下的mybash命令處理器和內存池 mybash可以再總結歸納一下,一上來有點緊張沒有條理 內存池是用邊界標識法寫的,…

從StandardMaterial和PBRMaterial到PBRMetallicRoughnessMaterial:Babylon.js材質轉換完全指南

在現代3D圖形開發中,基于物理的渲染(PBR)已成為行業標準。本文將深入探討如何在Babylon.js中將傳統StandardMaterial和PBRMaterial轉換為PBRMetallicRoughnessMaterial,并保持視覺一致性。 為什么需要轉換? PBRMetallicRoughnessMaterial作…

UEditor文檔在Servlet項目上的應用

UEditor 是一款功能強大的富文本編輯器,在項目中應用廣泛。 Ueditor使用 引入 UEditor 下載 UEditor:從 UEditor 官方網站(ueditor 官網)下載適合項目需求的版本。解壓文件:將下載的壓縮包解壓到項目的靜態資源目錄…

ThinkPHP快速使用手冊

目錄 介紹 安裝(windows環境) 安裝Composer 安裝ThinkPHP 目錄結構 配置文件 第一個接口(Controller層) Hello World 自定義Controller 請求參數 獲取查詢參數(Get請求) 獲取指定請求參數 獲取…

面向 C# 初學者的完整教程

🧱 一、項目結構說明 你的項目大致結構如下: TaskManager/ ├── backend/ │ ├── TaskManager.Core/ // 實體類和接口 │ ├── TaskManager.Infrastructure/ // 數據庫、服務實現 │ └── TaskManager.API/ // We…

Axios 的 GET 和 POST 請求:前端開發中的 HTTP 通信

🤍 前端開發工程師、技術日更博主、已過CET6 🍨 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 🕠 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 🍚 藍橋云課簽約作者、…

【前端】如何檢查內存泄漏

在實際的場景中,如果觀察到內存持續出現峰值,并且內存消耗一直沒有減少,那可能存在內存泄漏。 使用 Chrome DevTools 來識別內存圖和一些內存泄漏,我們需要關注以下兩個方面: ● 使用性能分析器可視化內存消耗&#xf…