redis代碼結構之一mem,bio

 Redis代碼結構 一mem,bio1.       Redis代碼結構事件庫類型庫網路程式庫持久化複製訂閱事務mainclient其它ae.cae_epoll.c

redis代碼結構之二net,main,event

 redis代碼結構之二net,main,event1. 網路程式庫anet.c、networking.c:這兩個檔案主要實現與網路通訊以及與client之間的互動處理。1.1 anet.c該檔案封裝了基本的網路socket操作(tcp、unixsock),我們這裡通過調用者簡單說明一下其中的函數。(有一些函數在當前還沒有使用)Server使用的函數:int anetTcpServer(char *err, int port, char

Redis SNAPSHOT的實現

Redis SNAPSHOT上一篇文章我們學習了redis aof的實現.這篇文章我們將學習redis的另一種持久化方式:snapshot(快照)。同上一篇文章一樣,我們首先介紹相關參數;然後依次介紹它的使用情境。1. 配置參數save <seconds> <changes>:相對一個DB,多少秒內發生了多少次更新操作,此時就會進行一次儲存操作,這個可以設定多個條件,它們中的任一個滿足都會儲存一次,下面把這個配置叫做時間變化條件。rdbcompression

redis代碼結構之三類型庫-string

redis代碼結構之三類型庫-list 1. 類型庫概述下面介紹redis核心的內容以及所支援的資料類型及操作。首先看一下相應的資料結構:typedef char *sds; //該檔案返回的基本上都是sds,即char *,也是實際儲存內容的地址。struct sdshdr { int len; //內容擁有的空間,不包括該結構的本身的大小,也不包括buf最後的結束符’\0’ int free; //剩下的可用記憶體空間,buf中可能有一些沒有使用,這些的長度就是free的值

Redis源碼學習之【記憶體配置】

介紹Redis現在的版本可以支援使用tcmalloc或者是jemalloc或是apple的malloc,或者是Redis自己的zmalloc。zmalloc對記憶體的分配管理是安全執行緒的,而且分配的記憶體必須要求是以sizeof(long)對其的。源碼zmalloc.h zmalloc.c分析宏變數說明:PREFIX_SIZE:在實際分配的記憶體之前用於記錄分配的記憶體的大小,和在實際的C中的malloc的記憶體資料結構類似,但是可能C是根據具體的環境不同的。HAVE_MALLOC_SIZE:

Redis源碼學習之【雜湊字典】

介紹Redis的雜湊字典通過key值來找對應的value。需要注意的是Redis的字典是如何進行rehash的。源碼dict.h dict.c資料結構如所示,雜湊字典用dict結構體表示,其中含有兩個雜湊表,主要用於進行rehash操作。同時雜湊表使用量表的方式解決衝突。具體的資料結構如下:/* * 雜湊表節點 */typedef struct dictEntry { // 鍵 void *key; // 值 union { void *val;

Redis源碼學習之【事件機制】

介紹Redis實現了自己的一套和libevent類似的事件驅動機制,主要用於處理時間事件和檔案事件。檔案事件底層主要是指網路IO事件的處理,底層使用的可能是select,epoll,或者是kqueue。Redis使用自己實現的AE而不是像memcache使用的libevent使得其效能更好,因為libevent為了其通用性增加了很多擴充功能顯然會降低使用它的效能。源碼ae.h

Redis源碼學習之【epoll封裝】

介紹在上一篇博文中說到了在Redis 的事件處理中使用到了底層的linux epoll,根據Redis的實現可以使用其他的多路通訊層,但是在一般的linux伺服器中使用的最多的還是epoll所以這裡主要介紹一下epoll。Redis並沒有直接的使用linux的epoll而是對其進行了一個簡單的封裝。源碼ae_epoll.c分析在原有的linux epoll的基礎上進行封裝,主要封裝了一下幾個函數:aeApiCreate:調用epoll_create建立epoll的控制代碼,並分配epoll事件。

Redis源碼學習之【Tcp Socket封裝】

介紹Redis對linux socket的封裝,雖然在該封裝中也含有對unix socket的封裝,但是普遍來說使用的tcp socket。和上一篇的epoll的封裝類似,都是通過調用底層的socket的函數完成一些列的方便的函數調用封裝。源碼anet.h anet.c分析主要包含以下幾個封裝函數(這裡僅介紹關於Tcp

Redis源碼學習之【網路通訊架構】

介紹前面兩篇文章主要介紹了Redis對epoll和socket

redis初探

1資料類型作為Key-value型資料庫,Redis也提供了鍵(Key)和索引值(Value)的映射關係。但是,除了常規的數值或字串,Redis的索引值還可以是以下形式之一:l  Lists (列表)l  Sets (集合)l  Sorted sets (有序集合)l  Hashes (雜湊表) 索引值的資料類型決定了該索引值支援的操作。Redis支援諸如列表、集合或有序集合的交集、並集、查集等進階原子操作;同時,如果索引值的類型是普通數字,Redis則提供自增等原子操作。2.3.2持久化通常,

twemproxy for redis使用說明及簡單分析

redis的資料量在記憶體高過50G時系統出現了明顯的瓶頸。為瞭解決這個問題,筆者找了些相關的資料,發現了這個開源軟體。功能很強大,包含了last.fm的ketama的一致性hash演算法,對於筆者目前的需求,該軟體已經能夠完全滿足。軟體的原始碼已經在git上面開源:https://github.com/twitter/twemproxy下載和安裝的過程就不再贅述,在README中有詳細的敘述。這裡主要說一說如何配置一個自己的叢集。安裝完成之後,修改設定檔。alpha:

nginx+tomcat+redis 負載平衡規劃

負載平衡須要的軟體和jar包 redis-2.4.14.tar.gz  tcl8.5.11-src.tar.gz  nginx-1.2.0.tar.gz tomcat-redis-session-manager-1.0.jar commons-pool-1.6-bin.tar.gz jedis-2.1.0.jar 第一步 先裝置tomcat支撐redis緩衝策略 1.把jar拷貝到 ¥TOMCAT_HOME/lib/

redis代碼結構之三類型庫-list

redis代碼結構之三類型庫-list 1. REDIS_LIST(t_list.c)該類型的命令包括:lpush,rpush,lpop,rpop等等。這裡我們只介紹lpush命令,它相應的命令回呼函數為void lpushCommand(redisClient *c) { pushGenericCommand(c,REDIS_HEAD);}我們直接看pushGenericCommandvoid pushGenericCommand(redisClient *c, int where) {

REDIS AOF的實現

Redis AOF上文我們介紹了Redis的主架構,以及兩種持久化大概原理。本文我們將從源碼角度分析Redis AOF的相關實現。(本文基於的版本為2.4.2)1.

Redis源碼學習之【命令協議格式】

介紹本來這篇要介紹Redis的命令解析的,但是要想對Redis的命令解析有更直觀的瞭解,必須先瞭解Redis的命令協議格式。源碼暫無(或者是是在network.c中吧)分析Requests*<number of arguments> CR LF$<number of bytes of argument 1> CR LF<argument data> CR LF...$<number of bytes of argument N> CR LF<

Redis源碼學習之【鏈表】

介紹Redis自己實現了一個含有迭代器的雙向鏈表。準系統就是通用的雙向鏈表,源碼實現還是值得閱讀以下的。源檔案adlist.h adlist.c分析這裡主要介紹其主要的資料結構其他的鏈表相關的操作有興趣的話可以自己去看源碼,其中的細節tricky還是挺多的。/* Node, List, and Iterator are the only data structures used currently. *//* * 鏈表節點 */typedef struct listNode { //

Redis源碼學習之【前言】

前言之前言本來上年的時候要參與到一個關於Redis中的項目中的,但是由於臨時的決定參與到了其他的項目。心中一直對Redis可以說是念念不忘,印象最深的是當初一開始聽到Redis的時候,說它是資料庫中的AK-47。而作者SalvatoreSanfilippo在實現Redis的時候完全按照標準C進行編寫,一切需要的資料結構和演算法都是自己實現。編碼風格是將編出來的代碼像詩歌一樣優美。Redis簡介作為前言這裡主要說一下Redis到底是幹什麼的,這裡就摘取Redis官網的介紹吧:原文在這裡Redis

redis偽主從

redis作為一種cache伺服器,其功能是非常強大的。redis還提供了master-slave機制,slave同步時間在測試機上如(單位ms)。圖中master和slave分布在兩個機房,訪問時間在0.88ms左右。然而在http://redis.io/topics/replication 有這麼一句話: When a master and a slave reconnects after the link went down, a full resync is

redis 配置主從(master-slave)伺服器

文章目錄 4.2 使用scp 來複製檔案及目錄4.3 配置slave的redis.conf5.1啟動伺服器5.2 測試同步情況

總頁數: 283 1 .... 60 61 62 63 64 .... 283 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.