原创 Redis 主從複製的原理—這一篇就夠了

主從複製,是指將一臺Redis服務器的數據,複製到其他的Redis服務器。前者稱爲主節點(master),後者稱爲從節點(slave);數據的複製是單向的,只能由主節點到從節點。 默認情況下,每臺Redis服務器都是主節點;且一個主節點可

原创 ReentrantLock 源碼解讀之lock和unlock過程

文中都是自己總結的,如果哪裏邏輯不對或者寫的不清楚的還請評論區中指出。 前言:本篇主要基於源碼來解讀ReetrantLock加鎖和解鎖的過程,reetrantLock的主體思想就是通過對鎖status的加減操作來實現的,如果當前線程獲得當

原创 CountDownLatch 源碼解讀

什麼是CountDownLatch CountDownLatch稱之爲閉鎖,它可以使一個或一批線程在閉鎖上等待,等到其他線程執行完相應操作後,閉鎖打開,這些等待的線程纔可以繼續執行。確切的說,閉鎖在內部維護了一個倒計數器。通過該計數器的值

原创 Java讀寫鎖—ReentrantReadWriteLock 源碼解析

  一、讀寫鎖簡介    現實中有這樣一種場景:對共享資源有讀和寫的操作,且寫操作沒有讀操作那麼頻繁。在沒有寫操作的時候,多個線程同時讀一個資源沒有任何問題,所以應該允許多個線程同時讀取共享資源;但是如果一個線程想去寫這些共享資源,就不應

原创 Redis數據結構(2)——列表

列表 內部編碼: ziplist(壓縮列表):當列表元素個數小於 list-max-ziplist-entries 配置(默認512個),同時列表中每個元素的值都小於list-max-ziplist-value配置時(默認64個字節),r

原创 redis集羣簡述

前言:redis cluster是redis分佈式解決方案,集羣通過分片來進行數據共享,並提供複製和故障轉移功能;redisCluster 也是學習分佈式存儲的絕佳案例 目錄 一.數據分佈 二. redis集羣功能的限制 三.搭建集羣 四

原创 Java線程池解析(上)

一.什麼是線程池 二.jdk提供的線程池以及其功能 1.Executor簡介 2.jdk提供的線程池 三.線程池的內部實現 1.workQueue(任務隊列) 2.拒絕策略 3.自定義線程創建ThreadFactory 4.擴展線程池(線

原创 volatile說明

本文簡敘: 1.詭異的死循環 2.java內存模型簡述及JMM對volatile變量定義的特殊規則 3.通過與synchronized對比來進一步說明volatile作用 一:詭異的死循環 在說volatile之前,先來個小例子來引入今天

原创 Redis數據結構(1)——redisObject對象和string

前言 該系列重點講解Redis在內存中的數據結構實現(暫不涉及基礎api)。Redis本質上是一個數據結構服務器(data structures server),以高效的方式實現了多種現成的數據結構,研究它的數據結構和基於其上的算法,對於

原创 Java線程池—從源碼看ThreadPoolExecutor(下)

該篇算是對Java線程池解析(上)的一個補充,從源碼的角度分析了下ThreadPoolExecutor。建議先看下Java線程池解析(上)在看該篇,這樣會順暢不少。如果文中有任何疑問歡迎留言討論。覺得好的話歡迎轉發評論。   我們先看下類

原创 redis集羣—想了解都在這裏

前言:redis cluster是redis分佈式解決方案,集羣通過分片來進行數據共享,並提供複製和故障轉移功能;redisCluster 也是學習分佈式存儲的絕佳案例 目錄 一.數據分佈 二. redis集羣功能的限制 三.搭建集羣 四

原创 ReentrantReadWriteLock 源碼解析

  一、讀寫鎖簡介    現實中有這樣一種場景:對共享資源有讀和寫的操作,且寫操作沒有讀操作那麼頻繁。在沒有寫操作的時候,多個線程同時讀一個資源沒有任何問題,所以應該允許多個線程同時讀取共享資源;但是如果一個線程想去寫這些共享資源,就不應

原创 Redis 複製

主從複製,是指將一臺Redis服務器的數據,複製到其他的Redis服務器。前者稱爲主節點(master),後者稱爲從節點(slave);數據的複製是單向的,只能由主節點到從節點。 默認情況下,每臺Redis服務器都是主節點;且一個主節點可

原创 Redis 內存回收

Redis默認無限使用服務器內存,爲防止極端情況下導致系統內存耗盡,建議所有的Redis進程都要配置maxmemory。 Redis的內存回收機制主要體現在以下兩個方面: 刪除鍵(主動或者刪除到達過期時間的鍵) 內存使用達到maxmemo

原创 Redis 持久化,超詳細吐血總結(7)

我們熟知redis是內存數據庫,它將自己的數據存儲在內存裏面,如果如圖redis進程退出或突然宕機,數據就會全部丟失,因此必須有一種機制來保證 Redis 的數據不會因爲故障而丟失,這種機制就是 Redis 的持久化機制。 Redis 的