原创 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文件中的鍵是否已經過期,已過期的不載入,而從服務器會全部加載,