Redis特性總結

一、速度快

? ? ? ?正常情況下,Redis 執?命令的速度?常快,官?給出的數字是讀寫性能可以達到 10 萬 / 秒,當然這也取決于機器的性能,但這?先不討論機器性能上的差異,只分析?下是什么造就了 Redis 如此之快,可以?概歸納為以下四點:
? Redis 的所有數據都是存放在內存中的,把數據放在內存中是 Redis 速度快的最主要原因。
? Redis 是? C 語?實現的,?般來說 C 語?實現的程序 “距離” 操作系統更近,執?速度相對會
更快。(有一定道理,但個人覺得有些牽強,因為mysql底層也是用C語言進行編寫的)
? Redis 使?了單線程,預防了多線程可能產?的競爭問題。
Redis 在 6.0 版本引?了多線程機制,但主要也是在處理?絡和 IO,不涉及到數據命令,即命令
的執?仍然采?了單線程模式。
? 作者對于 Redis 源代碼可以說是精打細磨,曾經有?評價 Redis 是少有的集性能和優雅于??的開源代碼。

二、基于鍵值對的數據結構服務器

? ? ? ?乎所有的編程語?都提供了類似字典的功能,例如 C++ ?的 map、Java ?的 map、Python ?的 dict 等,類似于這種組織數據的?式叫做基于鍵值對的?式,與很多鍵值對數據庫不同的是,Redis 中的值不僅可以是字符串,?且還可以是具體的數據結構,這樣不僅能便于在許多應?場景的開發,同時也能提?開發效率。Redis 的全程是 REmote Dictionary Server,它主要提供了 5 種數據結構:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(ordered set /zet),同時在字符串的基礎之上演變出了位圖(Bitmaps)和 HyperLogLog 兩種神奇的 ”數據結構“,并且隨著 LBS(Location Based Service,基于位置服務)的不斷發展,Redis 3.2. 版本種加?有關 GEO(地理信息定位)的功能,總之在這些數據結構的幫助下,開發者可以開發出各種 “有意思” 的應?。

三、豐富的功能

除了 5 種數據結構,Redis 還提供了許多額外的功能:
? 提供了鍵過期功能,可以?來實現緩存。
? 提供了發布訂閱功能,可以?來實現消息系統。
? ?持 Lua 腳本功能,可以利? Lua 創造出新的 Redis 命令。
? 提供了簡單的事務功能,能在?定程度上保證事務特性。
? 提供了流?線(Pipeline)功能,這樣客?端能將?批命令?次性傳到 Redis,減少了?絡的開
銷。

四、簡單穩定

? ? ? ?Redis 的簡單主要表現在三個??。?先,Redis 的源碼很少,早期版本的代碼只有 2 萬?左右,3.0 版本以后由于添加了集群特性,代碼增? 5 萬?左右,相對于很多 NoSQL 數據庫來說代碼量相對要少很多,也就意味著普通的開發和運維?員完全可以 “吃透” 它。其次,Redis 使?單線程模型,這樣不僅使得 Redis 服務端處理模型變得簡單,?且也使得客?端開發變得簡單。最后,Redis 不需要依賴于操作系統中的類庫(例如 Memcache 需要依賴 libevent 這樣的系統類庫),Redis ??實現了事件處理的相關功能。但與簡單相對的是 Redis 具備相當的穩定性,在?量使?過程中,很少出現因為 Redis ?? BUG?導致宕掉的情況。

五、客?端語?多

? ? ? ?Redis 提供了簡單的 TCP 通信協議,很多編程語?可以很?便地接?到 Redis,并且由于 Redis 受到社區和各?公司的?泛認可,所以?持 Redis 的客?端語?也?常多,?乎涵蓋了主流的編程語?,例如 C、C++、Java、PHP、Python、NodeJS 等。

六、持久化

通常看,將數據放在內存中是不安全的,?旦發?斷電或者機器故障,重要的數據可能就會丟
失,因此 Redis 提供了兩種持久化?式:RDB 和 AOF,即可以?兩種策略將內存的數據保存到硬盤中,這樣就保證了數據的可持久性。

七、主從復制(Replication)

八、?可?(High Availability)和分布式(Distributed)

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

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

相關文章

C# Unity 面向對象補全計劃 之 索引器與迭代器

本文僅作學習筆記與交流,不作任何商業用途,作者能力有限,如有不足還請斧正 本篇有部分內容出自唐老獅,唐老師網站指路:全部 - 游習堂 - 唐老獅創立的游戲開發在線學習平臺 - Powered By EduSoho 目錄 1.索引器 2.迭代器 1.索引器 我的理解 索…

深度學習PyTorch之13種模型精度評估公式及調用方法

深度學習pytorch之22種損失函數數學公式和代碼定義 深度學習pytorch之19種優化算法(optimizer)解析 深度學習pytorch之4種歸一化方法(Normalization)原理公式解析和參數使用 深度學習pytorch之簡單方法自定義9類卷積即插即用 實時…

C++ Primer 拷貝控制和資源管理

歡迎閱讀我的 【CPrimer】專欄 專欄簡介:本專欄主要面向C初學者,解釋C的一些基本概念和基礎語言特性,涉及C標準庫的用法,面向對象特性,泛型特性高級用法。通過使用標準庫中定義的抽象設施,使你更加適應高級…

【無監督學習】層次聚類步驟及matlab實現

層次聚類 (四)層次聚類1.算法步驟2.MATLAB 實現參考資料 (四)層次聚類 層次聚類是一種通過逐層合并或分裂數據點構建樹狀結構(樹狀圖,Dendrogram)的聚類方法。它分為兩種類型: 凝聚…

02 HarmonyOS Next儀表盤案例詳解(一):基礎篇

溫馨提示:本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦! 文章目錄 1. 項目概述2. 技術架構2.1 文件結構2.2 ArkTS 語言特性裝飾器的使用 3. 數據結構設計3.1 接口定義3.2 數據初始化 4. 生命周期與頁面路由…

微信小程序接入deepseek

先上效果 話不多說&#xff0c;直接上代碼&#xff08;本人用的hbuilder Xuniapp&#xff09; <template><view class"container"><!-- 聊天內容區域 --><scroll-view class"chat-list" scroll-y :scroll-top"scrollTop":…

istio入門到精通-2

上部分講到了hosts[*] 匹配所有的微服務&#xff0c;這部分細化一下 在 Istio 的 VirtualService 配置中&#xff0c;hosts 字段用于指定該虛擬服務適用的 目標主機或域名。如果使用具體的域名&#xff08;如 example.com&#xff09;&#xff0c;則只有請求的主機 域名與 exa…

6. PromQL的metric name(在node exporter復制下來交給AI解釋的)

目錄 前言&#xff1a; Go 運行時指標&#xff1a; Go 內存統計指標&#xff1a; CPU 指標&#xff1a; 內存指標&#xff1a; 磁盤指標&#xff1a; 網絡指標&#xff1a; 系統指標&#xff1a; 前言&#xff1a; 寫這個得目的是為了后續方便查詢&#xff0c;因為在pro…

圖像形成與計算機視覺基礎

1. 圖像形成的基本原理 圖像形成是物理世界與傳感器&#xff08;如膠片、CCD/CMOS&#xff09;交互的過程&#xff0c;核心是光線的傳播與記錄。 1.1 直接放置膠片模型 物理原理&#xff1a;物體表面反射的光線直接照射到膠片上&#xff0c;但無任何遮擋或聚焦機制。 問題&a…

Dockerfile概述及編輯

文章目錄 Docker 鏡像原理操作系統組成部分Docker 鏡像原理鏡像制作 Dockerfile概念及作用Dockerfile 概念Dockerfile 作用 Dockerfile關鍵字 案例要求實現步驟 Docker 鏡像原理 操作系統組成部分 操作系統組成&#xff1a;進程調度子系統、進程通信子系統、內存管理子系統、…

CES Asia 2025:AR/VR/XR論壇峰會備受矚目

CES Asia 2025第七屆亞洲消費電子技術貿易展&#xff08;賽逸展&#xff09;將在首都北京心盛大舉行。作為亞洲極具影響力的消費電子技術展會&#xff0c;此次盛會以“科技重塑生活&#xff0c;創新定義未來”為主題&#xff0c;預計將吸引全球500展商、100,000專業觀眾參與&am…

【Java線程基礎操作詳解】

Java線程基礎操作詳解 前言1. 線程創建1.1 繼承Thread類1.2 實現Runnable接口1.3 匿名內部類1.4 lambda表達式 2. 線程中斷3. 線程等待4. 線程休眠 前言 在Java編程里&#xff0c;線程是實現多任務處理的關鍵概念。本文會詳細講解Java中線程的創建、中斷、等待以及休眠等操作&…

qt 播放pcm音頻

一、獲取PCM音頻 ffmpeg -i input.mp3 -acodec pcm_s16le -ar 44100 -ac 2 -f s16le output.pcm -acodec pcm_s16le&#xff1a;指定16位小端PCM編碼格式&#xff08;兼容性最佳&#xff09;-ar 44100&#xff1a;設置采樣率為CD標準44.1kHz&#xff08;可替換為16000/8000等&a…

python實現的可愛卸載動畫

在逛掘金時&#xff0c;掘金用戶在B站看到的靈感進行的一個卸載窗口的動畫效果的實用案例。人類是一種不斷在學習的動物&#xff0c;并且是一種模仿能力學習能里比較強的動物。我這里是第三波的學習實踐者咯&#xff01; 相對VUE構建動畫效果窗口&#xff0c;我更加喜歡用pytho…

出現FullGC的排查思路

一、明確Full GC的觸發原因 根據多篇資料&#xff0c;Full GC的觸發條件主要包括&#xff1a; 直接調用System.gc()&#xff1a;代碼或第三方庫&#xff08;如jxl組件&#xff09;可能顯式觸發。老年代空間不足&#xff1a;大對象直接進入老年代、Minor GC后存活對象過多導致…

【Python運維】 Python與日志管理:構建高效的集中式日志收集與分析系統

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門! 解鎖Python編程的無限可能:《奇妙的Python》帶你漫游代碼世界 在當今信息化時代,日志數據成為企業監控系統健康、優化性能和保障安全的重要資源。傳統的分散式日志管理方式不僅效率低下,而且難以應對大…

給沒有登錄認證的web應用添加登錄認證(openresty lua實現)

這陣子不是deepseek火么&#xff1f;我也折騰了下本地部署&#xff0c;ollama、vllm、llama.cpp都弄了下&#xff0c;webui也用了幾個&#xff0c;發現nextjs-ollama-llm-ui小巧方便&#xff0c;挺適合個人使用的。如果放在網上供多人使用的話&#xff0c;得接入登錄認證才好&a…

靜態成員不依賴于特定對象的內容

靜態成員不依賴于特定對象的內容這一概念主要涉及到面向對象編程中的靜態成員&#xff08;包括靜態變量和靜態方法&#xff09;。為了詳細解釋這一點&#xff0c;我們需要從以下幾個方面來理解&#xff1a; 1. 面向對象編程基礎 在面向對象編程中&#xff0c;類是對象的藍圖&…

SQL Server查詢計劃操作符(7.3)——查詢計劃相關操作符(9)

7.3. 查詢計劃相關操作符 78)Repartition Streams:該操作符消費多個輸入流并產生多個輸出流。期間,記錄內容與格式保持不變。如果查詢優化器使用一個位圖過濾(bitmap filter),則輸出流中的數據行數將會減少。一個輸入流的每行記錄被放入一個輸出流。如果該操作符保留順序…

【Java學習】異常

一、異常的處理過程 異常類的似復刻變量被throw時&#xff0c;會立即中止當前所在的這層方法&#xff0c;即當層方法里throw異常類似復刻變量之后的語句就不會執行了&#xff0c;如果throw異常語句在當層方法中被try{}包裹&#xff0c;則中止就先發生被包裹在了try{}層&#xf…