途牛原創 無線中心運營研發Redis酷實踐

2021-09-19 09:39:20 字數 3188 閱讀 4206

redis是乙個開源的使用ansi c語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、key-value資料庫,並提供多種語言的api。從2023年3月15日起,redis的開發工作由vmware主持。從2023年5月開始,redis的開發由pivotal(redis作者目前就職)贊助。

redis作者antirez描述了redis比較適合的一些應用場景,nosqlfan簡單列舉在這裡,供大家一覽:

無線運營研發部,作為無線運營側的兵工廠,成功打造了cms,位置管理,許可權中心,rbz等運營支撐工具。

^^^^^^^ 回到主題,下面就為大家詳細介紹下,我們如何玩耍redis。

場景包括cms頁面快取、api限速器、頁面效能分析、api狀態統計、cms智慧型提醒-異常線路。尤其頁面效能分析、api狀態統計、cms智慧型提醒等應用簡直x爆了,將頁面和介面效能看板化、智慧型化,技術應用一目了然、一覽無餘。

場景字段的一些說明

基於redis的字串資料型別,用來儲存cms靜態頁面資料,提高cms相關頁面訪問速度,緩衝mysql的壓力。

if (! $statichtml || $this->clearcache)

基於redis的字串資料型別,用來控制api訪問頻率,一段時間內某乙個ip針對某乙個請求的訪問控制,官方用例

public static function ratelimit($apikey = null)

//獲取當前可執行的頻次

if ($currentapicount < 0)

return true;

}//cms頁面-重置頻率控制

return powerapiservice::ratelimit('cms-refresh-page-' . $pageid)

&& cmstool::refreshstaticpage($pageid);

基於redis的有序集合資料型別,分析頁面執行效能

//基於城市,記錄pc首頁生成時間

'homepage-cache-profile',

round($endtime - $starttime, 2),

$this->letter

);//彙總pc首頁效能資料

//基於頁面,記錄cms頁面重置時間

'cms-refresh-page-profile',

round($pageendtime - $pagestarttime, 2),

$pageid

);//獲取cms,0-30s效能的頁面

//獲取cms,>30s效能的頁面

綜合運用redis資料型別,彙總api的呼叫,監控api的實時請求,分析超時請求

/**

* webadmin-api-status

*/public static $webapilist200 = 'web:api:list:200';

public static $webapilist500 = 'web:api:list:500';

public static $webapilisttimeout = 'web:api:list:timeout';

public static $webapilistcache = 'web:api:list:cache';

public static $webapilistlatest = 'web:api:list:latest';

public static function collectapistatus(apistatus $apistatus)

//收集狀態

if ($apistatus->status == 200) else if ($apistatus->status == 500) else

//收集超時

綜合運用redis資料型別,準實時彙總cms所有樓層的線路呈現情況,精確的定位異常線路樓層,易於運營人員更好的開展工作。

//redis鍵值

$cmscheckprdkey = "cms::"; //cms-頁面id-預定城市

//推送cms樓層線路資訊

powerapiservice::push(

$cmscheckprdkey,

array(

'pid' => $pageid, //頁面id

'code' => $citycode, //城市code

'mid' => $moduleid, //產品模組id

'i' => $prerouteids, //運營配置線路

't' => time() //時間戳

));/**

* worker-計算cms中的異常產品

*/public static function cmscheckprd($item = array())

//獲取cms頁面模組資訊

//切割資料,獲取模組對應的異常線路

//list($moduleid, $moduleprd) = explode(':', $checkstring);

}

頁面id

城市code

異常樓層

1992上海4

1992廣州7

1992成都6

1949北京6

!顯然,redis的應用場景遠甚於此。=)

redis固然很讚,切記當你手上有一把錘子的時候,看所有的東西都是釘子,理解他,用好他。

凱撒擬購京東所持途牛全部股份 途牛股價大漲超1美元

程式設計客棧 www.cpppbvibxyvcns.com 5月29日 訊息 昨日晚間,凱撒旅業發布公告稱,其控股股東凱撒集團與京東就後者所持全部途 份達成合作意向,京東願意將其下屬公司持有的全部途 份轉讓給凱撒集團。據悉,交易完成後,凱撒集團將合計持有途 份7806.178 萬股a類普通股,持股比...

途牛訂單的服務化演進

乙個系統無論視同開發還是執行時的資源,都無法滿足業務的需求,服務化是我們架構演進的方向,不是為了服務化而去做服務化,是由業務發展的複雜度和發展的業務量驅動的架構進化,是為了滿足更快速的支撐更大規模的更複雜業務規則的擴充套件性要求設計,所以,我們做第一步,垂直拆分。各系統通過webservice或者r...

途牛搶票系統架構演進讀後感

鐵路作為中國最重要的交通工具,每一年春運都要面對浩浩蕩蕩的返鄉潮,雖然鐵路蓬勃發展,但依然無法支援如此龐大的返鄉人群 2018年全國春運旅客傳送量近30億人次,2019年預計會更多,每一年春運,一票難求都是乙個熱門話題。途牛搶票監控系統成立於2016年6月,通過借助搶票系統餘位監控 線下票台 商渠道...