原创 Redis 設計與實現---第五章:整數集合

整數集合是集合鍵的底層實現之一,當一個集合只包含整數值元素個數,並且這個集合的元素個數數量不多時,Redis採用整數集,也就是說每個數據類型可能會有多種數據實現,具體選用哪種是根據情況變化的。   整數集合的實現:     包含的類型:i

原创 Redis 設計與實現---第九章:數據庫持久化

SAVE (服務被阻塞)和 BGSAVE(子進程執行):       BGSAVE時,再次執行SAVE或者BGSAVE會被拒絕,因爲存在資源競爭,BGREWRITE會被延遲到BGSAVE執行完成後執行,雖然兩者都會fork子進程執行,但是

原创 Redis 設計與實現---第三章:字典

Redis數據庫構建k-v鍵值對時(任何類型),就是通過字典實現,也基本的hash鍵底層實現之一(當hash類型中鍵值比較多,或者鍵值元素比較長時) 但是鍵值多少以及長短的具體分界線是多少呢?? 字典的實現: Redis的字典使用has

原创 tornado PeriodicCallback 實現文件更新監聽功能

import os from tornado.ioloop import PeriodicCallback watch = {} # 通過讀取文件的更新時間 def check_file(modify_times, path) ->

原创 Redis 設計與實現---第十章:事件

文件事件:redis通過套接字與客戶端進行連接,文件事件就是服務器對套接字操作對象的抽象,服務器與客戶端他通信會產生相應的文件事件,而服務器則通過監聽並處理這些事件來完成一系列網絡通訊操作。 Reds基於Reactor模式開發了自己的網絡

原创 Redis 設計與實現---第一章:簡單動態字符串

字符串對象:     redis沒有直接使用C語言傳統字符串,而是自己封裝了一種叫做:簡單動態字符串(simple dynamic string,SDS)抽象類型,就是爲了實現高效修改     C語言的字符串:是以空字符串結尾的字符數組

原创 Redis 設計與實現---第七章:對象

Redis並沒有直接使用前面講到的基本數據結構,而是將他們封裝成基本對象使用,如字符串對象,列表對象,哈希對象,集合對象和有序集合對象。 使用對象的好處:       1. 根據對象判斷是否可以執行給定的命令;        2. 可以針

原创 Redis 設計與實現---第六章:壓縮列表

壓縮列表是列表鍵和hash鍵的底層實現原理之一(列表還可以使用鏈表,hash還可以使用字典),當。當。當。當鍵的個數不多,或者每個對應的值要麼是小整數,要麼是比較短的字符串時。 壓縮列表時redis爲了節約內存而開發的,是由一系列特殊的編

原创 Redis 設計與實現---第二章:鏈表

C語言中並無鏈表結構,redis構建了自己的鏈表,鏈表在redis中使用非常廣泛:     如列表鍵的實現,當列表鍵包含元素較少或者元素都比較短時使用壓縮列表,反之鍵較多或者較長時使用鏈表。     發佈訂閱,慢查詢,監視器等都使用了鏈表

原创 CentOs 安裝FastDfs Nginx 配合nginx image_filter縮略圖

最近在用tornado寫項目,需要一個文件存儲服務,剛好fdfs_tornado庫支持異步上傳,安裝fastdfs部署踩坑無數,特此記錄! 服務器版本:CentOS Linux release 7.7.1908 第一步:下載所需安裝包:

原创 Redis 設計與實現---第八章:數據庫(一)

Redis所有數據庫都保存在服務器狀態RedisServer結構的db數組中,db的每一個項都是一個redisDb結構,每一個redisDb結構代表一個數據庫,啓動服務時,根據配置database決定創建數據庫的個數 select 命令

原创 tornado centos下使用 supervisor

一、安裝: 1. pip install supervisor 或者 yum install supervisor -y 2. 創建文件目錄:mkdir /etc/supervisor/conf.d -p (路徑一) 3. 進入e

原创 windows下 python3 安裝channels報錯

使用:pip install channels 報錯信息:顯示要求:Microsoft Visual C++ 14.0 解決辦法:        1.下載.whl包安裝:                 https://pypi.org/

原创 Centos 使用docker 搭建redis集羣

三步走: 第一步:安裝依賴包下載 第二步:啓動多個容器 第三步:創建集羣   詳細步驟: 1. 安裝依賴包: 1. 安裝docker:https://blog.csdn.net/u011936655/article/details/81

原创 Redis 設計與實現---第八章:數據庫(二)

AOF 和 RDB、主從複製:     執行SAVE或者BGSAVE時,已經過期的鍵會被拋棄;     redis服務器載入時,如果開啓了RDB功能,主服務器載入時會判斷rdb文件中的鍵是否已經過期,已過期的不載入,而從服務器會全部加載,