研究:行星行撞地球之前 恐龍已面臨大氣汞污染

編譯:嚴融怡(胡適國小創思組科任教師)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

2016中國(中原)國際充電站(樁)技術設備展覽會

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

德國計畫撥款22億美元支持電動汽車 擴建充電站

據德國《時代週報》報導,德國聯邦經濟事務和能源部長西格瑪爾•加布里爾(Sigmar Gabriel)擬撥款20億歐元(約合21.8億美元)鼓勵更多消費者購買電動汽車。

《時代週報》稱,購買電動車將獲得聯邦政府的補貼,西格瑪爾還計畫擴建電動車充電站,並鼓勵聯邦政府機關人員使用電動汽車。然而該報導未進一步提供關於補貼的具體資訊。

德國聯邦政府計畫到2020年實現電動車保有量達百萬輛的目標。德國車企中,寶馬、梅賽德斯-賓士以及大眾旗下都已經生產了電動車,奧迪和保時捷也在計畫之中。

據悉,2014年德國電動車銷量約為1.9萬輛。到2014年年底,該國僅擁有2400個充電站和100個快速充電點。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

南極洲溫度創新高 攝氏18.2度跟台北一樣暖

摘錄自2020年2月9日聯合新聞網報導

紐約時報報導,世界上最冷、風勢最強也最乾燥的大陸南極洲,6日出現有紀錄以來最高溫,阿根廷在南極半島北端的艾斯伯蘭薩研究站測到攝氏18.2度高溫,打破2015年3月24日的最高溫紀錄攝氏17.5度,凸顯全球暖化的趨勢。

艾斯伯蘭薩目前處於夏季,6日出現攝氏18.2度,根據美國國家氣象局的資料,與洛杉磯當天出現的攝氏18度相當。根據中央氣象局的資料,這與位於中央氣象局內的台北測站當天上午8點到9點之間的溫度相當,6日當天上午8點是17.4度,9點是19.5度。

艾斯伯蘭薩從1961年起記錄氣溫。根據世界氣象組織的資料,南極洲的溫度通常不會這麼高,海岸地帶約是攝氏零下10度,內陸海拔較高處通常是攝氏零下60度。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

寒潮來襲,電動車撐不住?材料改良或為解方

北極震盪下,中國、台灣面臨數十年難得一見的低溫,連深圳與台北的平地都下起冰霰。這樣的天氣暴露出電動車的一大缺點──由於鋰電池在低溫環境下放電量不穩,因此電動車的續航力也大受挑戰。

根據美國AAA Automotive Research Center所做的研究,同一輛電動車在攝氏24度左右的溫度下可行駛約168公里,但在攝氏-6.7度左右時,行駛距離大幅縮減到只剩約69公里。而美國能源部及環保署的資料也載示,同樣在攝氏-6.7度的環境下,汽油車續航力會下降12%,但電動車會降低34%。

EnergyTrend鋰電池/電動車研究指出,同樣的問題也會發生在手機、平板等攜帶裝置上,主要的原因是鋰電池長時間處於寒冷環境下時,因化學反應不正常,會使放電電流變少,導致可用容量降低。若是攜帶式裝置,可將裝置帶在身上「保暖」,但電動車可不能如法炮製。

電動車近兩年來展望長紅,不只有Tesla、Faraday Future等新公司出現,保時捷、BMW、Audi、Nissan、Toyota、Ford、福斯汽車等國際車廠也紛紛推出電動車款,且銷售量持續攀升。尤其在霾害嚴重的中國,已正式將電動車列為重點發展項目。但在氣候的限制下,如何解決鋰電池的續航力降低問題,就成為一大議題。

從材料面、系統面解決

EnergyTrend調研團隊指出,中國雖然大力推動電動車,但仍以華中以南地區為推行主力,原因正在於東北、華北等地氣候太過嚴寒,不利於鋰電池與電動車行駛,不只電池容量會降低,汽車也會有無法發動的問題。

要解決此一問題,主要分成材料改良與系統改良。在材料方面,可改用更耐嚴寒氣候的電池材料;在系統方面,則又分成耐低溫零件以及低溫系統的使用。分析師指出,目前已有廠商針對電動車耐寒的議題提出相關技術。

以台灣電動機車Gogoro為例,Gogoro設計有高溫預防模式與低溫保護模式,在低溫狀況下,低溫保護模式啟用並使動力輸出降低,但騎乘一段時間後電池溫度就能慢慢回到正常。

目前相關技術仍在發展當中,但隨著電動車市場擴大,這將成為不得不跨越的一大難題。

(照片來源:Wikepedia)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

怎麼把CAT客戶端的RootMessageId記錄到每條日誌中?

什麼是RootMessageId?

為了理解RootMessageId先簡單介紹一下CAT的數據結構設計。CAT客戶端會將所有消息都封裝為一個完整的消息樹(MessageTree),消息樹可能包括Transaction、Event、Heartbeat、Metric等類型的消息。具體如下:

  • Transaction:適合記錄跨越系統邊界的程序訪問行為,比如遠程調用,數據庫調用,也適合執行時間較長的業務邏輯監控,Transaction用來記錄一段代碼的執行時間和次數
  • Event:用來記錄一件事發生的次數,比如記錄系統異常,它和transaction相比缺少了時間的統計,開銷比transaction要小
  • Heartbeat:表示程序內定期產生的統計信息, 如CPU利用率, 內存利用率, 連接池狀態, 系統負載等
  • Metric:用於記錄業務指標、指標可能包含對一個指標記錄次數、記錄平均值、記錄總和,業務指標最低統計粒度為1分鐘

歡迎關注微信公眾號:萬貓學社,每周一分享Java技術乾貨。

其中,Transaction類型的消息可作為消息樹節點,而其他消息只可作為消息樹的恭弘=叶 恭弘子節點,也就是Transaction是一個可嵌套的遞歸結構。比如:

消息樹的每一節點都有一個屬性messageId,用來唯一表示節點本身,其構成為:{domain}-{ip}-{timestamp}-{自增index}。另外還有兩個屬性,分別是parentMessageId, rootMessageId。parentMessageId表示父節點的messageId;rootMessageId則表示整個消息樹的根節點的messageId。這兩個屬性在之後CAT的調用鏈分析與分佈式調用鏈分析中發揮了關鍵作用。

歡迎關注微信公眾號:萬貓學社,每周一分享Java技術乾貨。

為什麼在日誌中記錄?

根據RootMessageId可以追蹤某一個請求的整個分佈式調用鏈,結合每一條日誌快速定位耗費性能的癥結,做針對性的性能優化。更加方便地做性能優化,特別是TP95、TP99等指標。

遇到偶爾發生的bug,是最讓人頭疼的,只有先從日誌中找線索,但是在海量的日誌中找到出現bug的那一個請求是很困難的。有了上游API提供的RootMessageId,就可以快速過濾出那次請求的所有日誌, 更快速更方便地定位線上bug。

歡迎關注微信公眾號:萬貓學社,每周一分享Java技術乾貨。

在日誌的什麼地方記錄?

當然是每一句日誌上都記錄RootMessageId了。有的同學會說,這日誌也記錄的太多了。當發現線上問題無法定位時,你就會狠日誌太少了。其實記錄日誌不怕多,就怕不全。現在硬盤很便宜了,搞個幾T沒有問題,另外還可以設置日誌清理策略。

歡迎關注微信公眾號:萬貓學社,每周一分享Java技術乾貨。

怎麼記錄到日誌中?

前面說了那麼多,終於到了今天的壓軸大戲了。實現記錄到日誌有很多種方式,這裏使用的是MDC(Mapped Diagnostic Contexts)。顧名思義,其目的是為了便於我們診斷線上問題而出現的方法工具類,目前我們經常使用的logback和log4j都是支持的。

歡迎關注微信公眾號:萬貓學社,每周一分享Java技術乾貨。

只需要在每個請求的入口調用MDC.put方法,把rootMessageId賦值進去就可以了,是不是很簡單?示例代碼:

//在Filter里,從header里獲取上下文信息,包括messageId、parentMessageId、rootMessageId
CatContext catContext = new CatContext();
catContext.addProperty(Cat.Context.ROOT, request.getHeader(CatConstants.CAT_HTTP_HEADER_ROOT_MESSAGE_ID));
catContext.addProperty(Cat.Context.PARENT, request.getHeader(CatConstants.CAT_HTTP_HEADER_PARENT_MESSAGE_ID));
catContext.addProperty(Cat.Context.CHILD, request.getHeader(CatConstants.CAT_HTTP_HEADER_CHILD_MESSAGE_ID));
if (catContext.getProperty(Cat.Context.ROOT) == null) {
    //如果調用鏈的頂端,沒有上下文信息,需要生成上下文信息
    Cat.logRemoteCallClient(catContext);
} else {
    Cat.logRemoteCallServer(catContext);
}
MDC.put("traceId", catContext.getProperty(Cat.Context.ROOT));

如果你還不知道怎麼集成CAT調用鏈,可以看看之前的《》

然後,在設置日誌輸出格式的配置文件里增加[%X{traceId}]。

Logback的xml配置示例:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true">
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%X{traceId}] [%-5level] [%-40.36logger{40}:%-4.4line] - %msg%n</pattern>
        </layout>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

log4j的properties配置示例:

log4j.rootCategory=INFO,stdout,info,error
log4j.rootLooger=warn,stdout,info,error
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p] [%thread] [%X{traceId}]  method:%l - %m%n

歡迎關注微信公眾號:萬貓學社,每周一分享Java技術乾貨。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

[視頻演示].NET Core開發的iNeuOS物聯網平台,實現從設備&PLC、雲平台、移動APP數據鏈路閉環

目       錄

1.      概述… 1

2.      登陸信息… 2

3.      設備驅動… 3

4.      組態建模… 3

5.      手機APP. 5

6.      視頻演示… 6

1.   概述

此次我們團隊人員對iNeuOS進行了全面升級,主要升級內容包括:

(1)    設備容器增加設備驅動,包括:西門子(S7-200smart、S7-300、S7-400、S7-1200、S7-1500)、三菱(FxSerial)、MQTT協議等。

(2)    組態建模可以設置背景,作為開發大屏展示使用,背景可以為一個獨立的圖元信息。

(3)    組態建模可以按瀏覽器大小按比例縮放,以適應移動APP显示。

(4)    組態建模標題框和文本框可以設置背景和字體顏色。

(5)    組態建模文本框綁定數據點后,可以設置上下限值,以用於判斷,進行顏色報警显示。

(6)    組態建模文本框可以設置數據保留小數點位數。

(7)    組態建模可以自定義畫任意圖形,並且填充顏色等。

(8)    組態建模開發好的視圖,可以右鍵單擊數值文本框,查看數據曲線趨勢。

(9)    手機移動APP,組態建模開發的視圖,直接可以显示在手機APP上。

(10)進行其他優化。

2.   演示信息

在線演示:  (注:服務器比較慢,請耐心等待。用戶自已註冊用戶,體驗系統功能)

視頻演示:

驅動開發: (v2.1版本)

手機APP:

登陸界面,如下圖:

3.   設備驅動

   主要了主流的PLC驅動,包括:西門子(S7-200smart、S7-300、S7-400、S7-1200、S7-1500)、三菱(FxSerial)。增加了MQTT協議,MQTT協議基本與阿里雲IOT的alink協議保持一致,方便在私有雲建設過程中遷移。如下圖:

      iNeuKernel現在完全支持跨平台部署,至此iNeuOS的前台和後台全部支持跨平台。

4.   組態建模

   雲端組態建模改動和完善的地方比較多,主要依據用戶提出的建議進行了修改。

(1)增加編輯區域設置背景功能,主要用於開發數據大屏展示的效果,可以上傳多個背景圖元,並且作為一個獨立的圖元,隨時可以更換背景。

  (2)編輯數據的文本框,可以設置背景和字體顏色、報警運作、保留小數位數等,更具有交互感。

  (3)任意畫圖形,儘管我們提供了3500多個SVG圖元信息,但是難免缺少特殊領域的圖形,可以使用這個功能彌補。也可以畫大屏展示的特定區域形式。

  (4)組態建模開發完成后,可以右鍵單擊文本框,查看趨勢,以展示當前數據的曲線圖。

5.   手機APP

    手機APP可以使數據離用戶最近,組態建模完成后,通過手機進行縮放显示。

      打開手機APP显示已經開發完成的視圖列表,選擇任意視圖,显示效果如下圖。

6.   視頻演示


如果你播放不了該視頻, 那是你的設備不支持該文件格式

參見:

《》

《》

《》

 物聯網&集成技術 QQ群:54256083 

 物聯網&集成合作 QQ群:727664080

 網站:

聯繫QQ:504547114

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

2019能源碳排放不再增長 IEA:見證能源轉型是現在進行式

環境資訊中心綜合外電;彭瑞祥 編譯

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

比亞迪秦純電動版2016年Q1上市 售價25萬元起

日前,有媒體從比亞迪汽車內部人士處瞭解到,秦EV300車型將於2016年一季度正式上市,新車的續航里程將達到300公里。此外,新車前臉造型有所改變,增加了藍色塗裝。

比亞迪秦EV300定位為緊湊級轎車,車身架構採用承載式車身,提供三種不同樣式輪轂,輪胎規格為205/50R17。整車尺寸相對同級車型顯得中規中矩,車身長寬分別為4740*1770*1490毫米,高度小幅調整相比現款增加10毫米,軸距為2670毫米。與秦雙冠版相比,秦EV300售價將會更低,預計售價為25萬元起。

比亞迪秦EV300外觀前臉有所改變,增加了前中網的藍色塗裝,並且將快充與慢充介面全部集成在了車頭處,改變了以前中網的線條。刀鋒狀前大燈造型加入了LED日間行車燈,進氣格柵採用鍍鉻裝飾條,流線型車身及上揚式腰線設計突顯運動感。輪轂造型提供三款樣式,其中一款採用了的七輻式設計,輪圈直徑為17英寸。

比亞迪秦雙冠版綜合最大輸出功率為217千瓦,峰值扭矩達到479牛•米。秦EV300與其相比,此次搭載一台自主研發電動機,最大輸出功率為160千瓦,峰值扭矩為310牛•米,作為純電動車的比亞迪秦EV300動力表現已經超越多數同級車。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※專營大陸空運台灣貨物推薦

※台灣空運大陸一條龍服務

※評比南投搬家公司費用收費行情懶人包大公開

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

詳細講解 Redis 的兩種安裝部署方式

Redis 是一款比較常用的 NoSQL 數據庫,我們通常使用 Redis 來做緩存,這是一篇關於 Redis 安裝的文章,所以不會涉及到 Redis 的高級特性和使用場景,Redis 能夠兼容絕大部分的 POSIX 系統,例如 Linux、OS X 等,但是很遺憾不支持在 Windows 上安裝,當然如果你需要在 windows 下安裝 redis 的話,也是可以的,微軟公司的開源技術組在 GitHub 上 維護一個 Redis 的分支,GitHub 地址為:https://github.com/microsoftarchive/redis,我看了一下這上面的版本比較舊,所以我個人不推薦使用這個來安裝 Redis ,Windows 用戶可以使用 Docker 容器來安裝,也是非常方便、簡單的,接下來我們就一起來看看 Redis 的安裝方式吧。

1、Linux 系統下安裝 redis

安裝

在 redis 官網中有安裝教程,鏈接:https://redis.io/download,安裝步驟我拷貝過來了,步驟如下:

$ wget http://download.redis.io/releases/redis-5.0.6.tar.gz
$ tar xzf redis-5.0.6.tar.gz
$ cd redis-5.0.6
$ make

我在 /usr/local 目錄下面操作的這些命令,也就是說 Redis 的安裝目錄為 /usr/local ,這些命令執行完之後你的機器上安裝好 Redis ,在安裝的過程中,如果你的機器上沒有安裝 gcc ,你安裝好 gcc 之後再 make 可能會報以下錯誤

jemalloc/jemalloc.h: No such file or directory

當時沒有截取詳細的錯誤信息,只把主要的一段截取出來了,這個錯誤的原因是我們上一次 make 報錯之後,有編譯后的文件,所以我們需要清除上一次的殘留文件再重新編譯,將 make 換成 make distclean && make 就可以了。

redis.conf 文件

redis.conf 是 Redis 的配置文件,redis 的所有配置有在這個文件裏面,這個文件挺大的有接近 1400 行,有關 redis 的操作、使用說明都在裏面,可以詳細的閱讀閱讀這個配置文件,大部分情況下我們使用默認配置就行,只需要設置少量配置就行。redis.conf 的存放位置在 Redis 的安裝目錄下,我這裡是 /usr/local/redis-5.0.5 目錄下,一起來看看我們可能會修改的幾個配置:

  • bind 127.0.0.1:允許訪問機器的IP,默認只有本機才能訪問,你可以修改 ip 來運行其他機器也能訪問,但是如果你想讓所有機器都可以訪問的話,直接設置為 bind 0.0.0.0 就行了。
  • port 6379:redis 實例啟動的端口,默認為 6379
  • daemonize no:是否以守護進程的方式運行,默認是 no,也就是說你把啟動窗口關閉了,redis 實例也就關閉了,一般這個選項我們設置為 yes,以守護進程的方式運行,說俗一點就是後台運行。
  • pidfile /var/run/redis_6379.pid:如果我們使用守護進程方式運行的話 ,就會產生一個後綴名為 .pid 的文件,這個使用默認的也行
  • dir ./:持久化文件存放位置,這個配置我們還是設置一下為好,我這裏設置為 dir /usr/local/redis_data
  • appendonly no:是否開啟 AOF 持久化方式,redis 默認只開啟了 RDB 模式,這裏我們設置為 yes,兩種方式都開啟,雙重保險,關於這兩種方式的區別,我們後面在學習

好像大概設置這幾個就好了,更多關於 redis.conf 的配置,你可以詳細閱讀 redis.conf 配置文件或者查閱相關手冊。

redis 的啟動

Redis 的啟動非常簡單,Redis 安裝完成之後,會在 /usr/local/redis-5.0.5/src 存放 Redis 的 shell 交互命令,其中有一個 redis-server ,這個就是 Redis 的啟動命令,執行:

./redis-server /usr/local/redis-5.0.5/redis.conf

後面跟的是 redis.conf 的文件路徑,不出意外的話我們將啟動成功,你會看到如下界面:

這裏我們使用的是守護進程的方式啟動,所以不會出現帶有 redis logo 的啟動界面,我們可以使用 shell 命令登錄到 Redis 中,還是在 src 目錄下面,執行下面這條命令:

./redis-cli

這命令你就進入了 shell 交互界面,./redis-cli 命令可以帶一些參數,例如 -h IP 這個就可以進入指定機器的 Redis 實例,進入之後你就可以進行一些操作了,如下圖所示:

redis 關閉

Redis 的關閉方式有兩種,一種是在 shell 交互界面關閉,另一種是 kill + 進程號關閉 Redis 實例的方式

shell 交互界面關閉

shutdown [nosave|save]

在 shell 交互界面輸入 shutdown 命令就可以關閉 Redis 實例,後面有一個可選參數,nosave 就是不將內存中的數據持久化,save 就是將內存中的數據持久化。shutdown 關閉方式是比較優雅的關閉方式,建議使用這種關閉方式

Kill + 進程號關閉 Redis 實例

使用 ps -ef|grep redis 查看 Redis 進程號,如下圖所示:

在這裏找到我們需要關閉 redis 實例的進程號,比如這裏我們的進程號為 27133,那麼我們就直接使用 kill 27133 關閉 Redis 實例服務,這種方式我們需要注意一個地方,那就是需要我們去把 pid 文件刪掉,pid 文件存放的位置我們在 redis.conf 里配置的 pidfile /var/run/redis_6379.pid,我們需要到 /var/run 目錄下把 redis_6379.pid 刪掉,這樣下一次才能正常重啟 Redis 服務。

上面兩種方式都可以關閉 Redis 服務,隨便選一種都行,但是切記不要使用 Kill 9 方式關閉 Redis 進程,這樣 Redis 不會進行持久化操作,除此之外,還會造成緩衝區等資源不能優雅關閉,極端情況下會造成 AOF 和複製丟失數據的情況

redis 開機自啟動

在服務器上我們可能需要將 Redis 設置為開機自啟動,其實這個也非常簡單,我們只需要做以下四步操作即可。

1、 編寫配置腳本 vim /etc/init.d/redis
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
#chkconfig: 2345 80 90
#description:auto_run
# 端口號
REDISPORT=6379
# 啟動命令
EXEC=/usr/local/redis-5.0.5/src/redis-server
# shell 交付命令
CLIEXEC=/usr/local/redis-5.0.5/src/redis-cli
# pid 存放位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
# redis 配置文件
CONF="/usr/local/redis-5.0.5/redis.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac
2、修改 redis.conf,設置 redis 為守護進程方式運行
################################# GENERAL #####################################

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
3、修改文件執行權限
chmod +x /etc/init.d/redis
4、設置開機啟動
# 啟動 redis
service redis start
# 停止 redis
service redis stop
# 開啟服務自啟動
chkconfig redis on

2、Docker 安裝 Redis

Docker 安裝 Redis 整體來說比較方便,我說的是非生產環境,就是自己搭着測試或者學習的環境,下面的步驟全部建立在你已經在你的電腦上安裝了 Docker 的基礎上,下面就來開啟安裝之旅。

1、拉取 redis 鏡像

docker pull redis

2、快速啟動

docker run -p 6379:6379 –name myredis -d redis redis-server –appendonly yes

這種方式啟動使用的默認的 redis.conf 配置,我們先來看看這幾個參數的意思

  • -p 6379:6379:映射端口,前面的 6379 是外部 redis 端口,後面的 6379 是容器內部的 redis 端口
  • –name myredis :容器對應的名稱
  • redis redis-server:redis 代表着 redis 鏡像 redis-server 表示的是執行的命令,也是就 redis 的啟動命令,跟我們 linux 下面的 ./redis-server 一樣
  • –appendonly yes:開啟 AOF 持久化
3、使用 redis

通過上面的步驟,我們已經在 Docker 中啟動了 Redis 服務,下面我們就來通過 redis-cli 訪問一下,使用下面這條命令就可以啟動 redis-cli

docker exec -it dockerRedis redis-cli

其中 dockerRedis 是你啟動 Redis 容器名稱,不出意外的話,你可以啟動一個 redis-cli 客戶端,如下圖所示:

上面就是使用 Docker 簡單的啟動 Redis ,整體來說比 linux 上面安裝啟動要方便不少,主要是你可以在 windows 系統上運行,雖然最終它還是運行在 linux 上面的,但是這個過程我們是無感知的。你可以能會問:我想在啟動的時候知道 redis.conf 可行不?答案是可行的,但是如果你對 Docker 不了解的話,可能會遇到一些坑,我就遇到了,因為我對 Docker 不是太了解,平時使用 docker 都是只需要傳入參數就好了,沒有傳過文件。關於啟動時指定配置文件,在 redis 鏡像那裡有說明,但是是 linux 下面的,並不是 windows 系統下的 Docker 配置方式,所以我就百度到了下面這段命令

docker run -v /d:/dockerdata/redis/config/redis.conf:/usr/local/etc/redis/redis.conf –name myredis redis redis-server /usr/local/etc/redis/redis.conf

這段命令就是一個坑,壓根就沒有,啟動這條命令,你將得到如下反饋:

顯然這條命令是沒有用的,當然這隻是我個人認為,也許是我操作失誤,也許是我知識面不夠,如果朋友們發現錯誤還請多多指教,這裏我就先當它是錯誤的,正確的做法是在 Docker 的宿主機上存放 redis.conf 文件,顯然 Docker 的宿主機並不是 windows 系統,而是啟動在 windows 系統上的虛擬機,所以我們需要進入到虛擬機裏面,Docker Quickstart Terminal 啟動默認界面並沒有正真的登錄到虛擬機,所以我們需要更改登錄方式,使用 docker-machine ssh 命令,如下圖所示:

這樣我們就進入到了真正的虛擬機裏面,我們就在一台虛擬機上操作了,跟我們在 linux 上的安裝一樣,我們先建立兩個目錄用來存放 Redis 配置:

/usr/local/redis:存放redis.conf
/usr/local/redis/data :存放持久化文件

建立好兩個目錄后, 我們把 redis.conf 放在 /usr/local/redis 目錄下,使用下面這條 Docker 命令啟動 Redis 鏡像:

docker run -p 6379:6379 -v /usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/redis/ –name dockerRedis -d redis redis-server /usr/local/etc/redis/redis.conf

這條 docker 啟動命令跟上面的有一點區別,有兩個參數我在這裏說明一下:

  • -v /usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf:這參數是將 /usr/local/redis/redis.conf 複製到 /usr/local/etc/redis/redis.conf 下
  • -v /usr/local/redis/ /usr/local/redis/data 也會存放持久化文件

到此,Docker 安裝 Redis 的複雜操作也做完了,如果沒什麼特別要求的話,使用簡單的 docker 啟動就好了,簡單方便,完全夠用了。

最後

目前互聯網上很多大佬都有 Redis 系列教程,如有雷同,請多多包涵了。原創不易,碼字不易,還希望大家多多支持。若文中有所錯誤之處,還望提出,謝謝。

歡迎掃碼關注微信公眾號:「平頭哥的技術博文」,和平頭哥一起學習,一起進步。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※專營大陸空運台灣貨物推薦

※台灣空運大陸一條龍服務

※評比南投搬家公司費用收費行情懶人包大公開

※南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!