原创 ElasticSearch聚合分析

聚合用於分析查詢結果集的統計指標,我們以觀看日誌分析爲例,介紹各種常用的ElasticSearch聚合操作。 目錄: 查詢用戶觀看視頻數和觀看時長 聚合分頁器 查詢視頻uv 單個視頻uv 批量查詢視頻uv Having查詢 根據 c

原创 Redis分佈式鎖

在多線程開發中我們使用鎖來避免線程爭奪共享資源。在分佈式系統中,程序在多個節點上運行無法使用單機鎖來避免資源競爭,因此我們需要一個鎖服務來避免多個節點上的進程爭奪資源。 Redis數據庫基於內存,具有高吞吐量、便於執行原子性操作等特點非常適

原创 Java 註解

註解(Annotation)在JDK1.5之後增加的一個新特性, 使用註解可以極大地簡化編碼提高開發效率,目前許多流行的框架(如Spring、MyBatis等)都大量使用註解。 編寫註解類: @Target(ElementType.TYPE

原创 Redis持久化機制

Redis把數據存儲在內存中,當進程退出後數據就會丟失。Redis持久化機制可以將內存中的數據存儲到磁盤上,當重新啓動時可以從磁盤文件中讀取數據加載到內存中。 Redis支持兩種持久化機制:全量鏡像RDB和增量式持久化AOF。 RDB RD

原创 緩存應用Tips

爲了提高系統吞吐量,我們通常在業務架構中引入緩存層。 緩存通常使用內存存儲來實現,比如Redis/Memcached以及應用內緩存GuavaCache/DjangoCache。 所有的查詢操作先訪問緩存,若未緩存該數據再從數據庫中查詢該數據