Redis 事務支持 ACID 麼?-編程思維

騰訊面試官:「數據庫事務機制了解麼?」 「内心獨白:小意思,不就 ACID 嘛,轉眼一想,我面試的可是技術專家,不會這麼簡單的問題吧」 程許遠:「balabala…… 極其自信且從容淡定的說了一通。」 騰訊面試官:「Redis 的事務了解麼?它的事務機制能實現 ACID 屬性麼?」 程許遠:「撓頭,這個……我知道 lua 腳本能實現事務…」 騰訊面試官:「好的,回去等通知吧。」 碼哥,

面試官問,Redis 是單線程還是多線程?我懵了-編程思維

我們平時看到介紹 Redis 的文章,都會說 Redis 是單線程的。但是我們學習的時候,比如 Redis 的 bgsave 命令,它的作用是在後台異步保存當前數據庫的數據到磁盤,那既然是異步了,肯定是由别的線程去完成的,這怎麼還能說 Redis 是單線程的呢? 其實通常說的 Redis 是單線程,主要是指 Redis 對外提供鍵值存儲服務的主要流程,即網絡 IO 和鍵值對讀寫是由⼀個線程來完成

Redis之ziplist源碼分析-編程思維

一、ziplist簡介 從上一篇分析我們知道quicklist的底層存儲使用了ziplist(壓縮列表),由于壓縮列表本身也有不少内容,所以重新開了一篇,在正式源碼之前,還是先看下ziplist的特點: 1. ziplist是一種特殊編碼的雙向列表,特殊編碼是為了節省存儲空間。 2. ziplist允許同時存放字符串和整型類型,并且整型數被編碼成真實的整型數而不是字符串序列(節省空間)。 3.

redis 流水線-編程思維

Redis提供的流水線特性:這個特性允許客戶端把任意多條Redis命令請求打包在一起,然後一次性地将它們全部發送給服務器,而服務器則會在流水線包含的所有命令請求都處理完畢之後,一次性地将它們的執行結果全部返回給客戶端。 通過使用流水線特性,我們可以将執行多個命令所需的網絡通信次數從原來的N次降低為1次,這可以大幅度地減少程序在網絡通信方面耗費的時間,使得程序的執行效率得到顯著的提升。

本地緩存google.guava及分布式緩存redis 随筆-編程思維

        近期項目用到了緩存,我選用的是主流的google.guava作本地緩存,redis作分布式 緩存,先說說我對本地緩存和分布式緩存的理解吧,可能不太成熟的地方,大家指出,一起 學習.本地緩存的特點是速度快,不會受到網絡阻塞的幹擾,但由于是放在本地内存中,所 以容量較小,不能項目間共享比IO效率高比redis,且不會持久化.所以拿來存儲一些數據 很少,但又經常執行的,甚至隻要啟動程序

緩存一緻性-編程思維

緩存數據的一緻性 讀所有的數據,首先去緩存中獲取,緩存中沒有就去讀數據庫,最後在緩存中放一份。如果該數據在數據庫中發生改變,那麼緩存裡面的數據如何和數據庫保持一緻?解決這個問題,目前有兩個用的非常多的場景: 雙寫模式 失效模式 雙寫模式 修改數據庫的數據後再修改緩存中的數據 但又引出了一個問題,那就是當有并發時,線程一将數據庫的值改為「一号」然後立刻将這個值保存到緩存,而保存過程中遇到了種種原

Redis 緩存過期删除/淘汰策略分析-編程思維

Redis 緩存過期删除/淘汰策略分析 Redis 緩存删除 Redis 鍵過期删除,定期删除(主動)和惰性删除(被動) Redis 内存不足時,緩存淘汰策略 key 鍵過期删除 我們用 redis 作為緩存數據庫,設置 k-v 數據的時候,可以給這條數據設置一個過期時間。比如,set 命令設置過期時間: set testkey redisvalue EX 60 EX: 表示秒, EX 60

Redis源碼筆記--服務器日志和函數可變參數處理server.c-編程思維

前言 Redis源碼中定義了幾個和日志相關的函數,用于将不同級别的信息打印到不同的位置(日志文件或标準輸出,取決于配置文件的設置),這些函數的定義位于 server.h 和server.c 文件中,包括: 1 void serverLog(int level, const char *fmt, ...); 2 void serverLogRaw(int level, const char *m

Redis集群環境搭建實踐-編程思維

0 Redis集群簡介 Redis集群(Redis Cluster)是Redis提供的分布式數據庫方案,通過分片(sharding)來進行數據共享,并提供複制和故障轉移功能。相比于主從複制、哨兵模式,Redis集群實現了較為完善的高可用方案,解決了存儲能力受到單機限制,寫操作無法負載均衡的問題。 本文是Redis集群學習的實踐總結,詳細介紹逐步搭建Redis集群環境的過程,并完成集群伸縮的實踐。

【Redis的那些事 · 續集】Redis的位圖、HyperLogLog數據結構演示以及布隆過濾器-編程思維

  一、Redis位圖   1、位圖的最小單位是bit,每個bit的值隻能是0和1,位圖的應用場景一般用于一些簽到記錄,例如打卡等。 場景舉例: 例如某APP要存儲用戶的打卡記錄,如果按照正常的思路來做,可能是用戶每天是否打卡的記錄都單獨設置一個key-value鍵值對來存儲,這樣的話,每個用戶每天都需要耗費一個鍵值對空間。而如果是位圖,就可以很方便地通過位圖來進行記錄,例如如下圖:    

Redis數據結構—簡單動态字符串(SDS)-編程思維

目錄Redis—簡單動态字符串(SDS)SDS的定義SDS與C字符串的區别1. 常數複雜度獲取字符串長度:2. 杜絕緩沖區溢出:3. 減少修改字符串時帶來的内存重分配次數4. 二進制安全小結 Redis—簡單動态字符串(SDS) 這兩天我原本打算學習一下若依這個老生常談的開源的後端管理系統(如果你沒聽過,在将來的某一天也會聽說甚至用到),拿到這個系統的前後端分離版後,若依碼雲項目地址,一啟動發現

Redis數據結構—鍊表與字典-編程思維

目錄Redis數據結構—鍊表與字典鍊表Redis鍊表節點的結構Redis鍊表的表示Redis鍊表用在哪字典Redis字典結構總覽Redis字典結構分解哈希算法解決鍵沖突rehash漸進式rehash Redis數據結構—鍊表與字典 大家好,我是白澤。今天我們來聊一聊Redis中的鍊表與字典 鍊表 關于鍊表的基礎概念其實你在學習Redis之前一定積累了不少,所以本文将默認你已經掌握了鍊表相關的基礎

Redis數據結構—跳躍表-編程思維

目錄Redis數據結構—跳躍表跳躍表産生的背景跳躍表的結構利用跳躍表查詢有序鍊表Redis跳躍表圖示Redis跳躍表數據結構小結 Redis數據結構—跳躍表 大家好,我是白澤,最近學校有點事Redis知識點的更新就放緩了,趁着周六趕緊補一補,我們開始吧~ 跳躍表産生的背景 對于有序列表的查找來說,無法找到類似用在有序數組上的二分查找這樣的查找算法,因此遍曆的效率比較低,跳躍表的出現就是為了提高有

Redis數據結構—整數集合與壓縮列表-編程思維

目錄Redis數據結構—整數集合與壓縮列表整數集合的實現整數集合的升級整數集合不支持降級壓縮列表的構成壓縮列表節點的構成連鎖更新小結 Redis數據結構—整數集合與壓縮列表 大家好,我是白澤。今天我們将學習Redis的整數集合與壓縮列表這兩個數據結構,且在本文中我将盡量隻描述這兩種結構中重要的部分,而非面面俱到,因為我學Redis數據結構的初衷是為了我能更好理解後面要講到的Redis對象,而非真

Redis數據持久化—RDB持久化與AOF持久化-編程思維

目錄Redis數據持久化—RDB持久化與AOF持久化RDB持久化RDB文件的創建RDB文件的載入自動間隔性保存檢查保存條件是否滿足AOF持久化AOF持久化的實現AOF文件的載入與數據還原AOF重寫的概念AOF文件重寫的實現AOF後台重寫 Redis數據持久化—RDB持久化與AOF持久化 大家好,我是白澤,今天講一下Redis的持久化,大家都知道Redis數據庫之所以快,很大的原因是因為它運行在服

緩存中存在的三個問題及相關圖解(圖示解決方式) redis-編程思維

正常的緩存,查到返回,查不到就null的,而沒有緩存key,持續大量請求,都查詢到數據庫了。 這個也類似網頁端的DDOS攻擊 時間太久遠差點記不起來了。 類似這樣的攻擊,都與緩存中第一個問題還是有相似之處,因為都是惡意人為的攻擊。 緩存穿透 (根據某個key查不到緩存的數據,用戶不會一直請求,額外情況是也許不是惡意的,比如taobao的秒殺活動和其它優惠限時限量活動,12306的搶票,用戶還是

《Redis開發與運維》pdf 下載-編程思維

内容簡介 本書全面講解Redis基本功能及其應用,并結合線上開發與運維監控中的實際使用案例,深入分析并總結了實際開發運維中遇到的“陷阱”,以及背後的原因, 包含大規模集群開發與管理的場景、應用案例與開發技巧,為高效開發運維提供了大量實際經驗和建議。本書不要求讀者有任何Redis使用經驗,對入門與進階DevOps的開發者提供有價值的幫助。主要内容包括:Redis的安裝配置、API、各種高效功

linux(ubuntu21.10):apt方式安裝redis6.0.15-編程思維

一,查看是否已安裝redis 1,redis官網: https://redis.io/ 2,檢查是否已安裝: root@lhdpc:~# whereis redis-server redis-server: 說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest          對應的源碼可以訪問這裡獲取