国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

向著架構技術進軍---實踐redis(一)

2024-06-28 13:24:18
字體:
來源:轉載
供稿:網友
向著架構技術進軍---實踐redis(一)

一個網站如何面對高容量大并發的壓力,是架構師們要研究的事情。雖然目前我工作的站還沒有達到這個水平,但是一些未雨綢繆的工作應該要開始了,給我們定的計劃是在半年到一年時間,完成高容量大并發系統的架構設計。說干就干,先從redis開始吧。

首先得準備一份高記錄數據樣本,奈何手上沒有現成的,只好從短信系統取,短信系統用的是MSSQL,先得導入到MySQL中,我用了一個工具是mss2sql,下載地址是:http://www.intelligent-converters.com/demos/mss2sqld.exe,然后將一個100萬記錄的表導入MYSQL居然花了4個小時。

接下來安裝redis,先在windows環境下裝了個2.4版,準備將該表從MYSQL中導入redis,發現網上有篇文章介紹導出方法:http://www.oschina.net/translate/mysql-to-redis-in-one-step 《一步完成 MySQL 向 Redis 遷移》,發現在windows下始終提示

G:/redis-2.4.5-win32-win64/64bit>redis-cli --pipe(error) ERR unknown command '--pipe'

一開始以為是windows原因,隨即準備了臺centos的虛機,搗鼓一些nginx+php+mysq的環境不在話下,最后安裝了redis發現還是提示上述錯誤,最終想起來我在windows和linux下用的都是redis2.4版,現在都用2.6和2.8版本了,那就升級吧。發現yum庫中最高版也只有2.4,那只有手動安裝了:http://www.redis.io/download

$ wget http://download.redis.io/releases/redis-2.8.14.tar.gz$ tar xzf redis-2.8.14.tar.gz$ cd redis-2.8.14$ make提示GCC忘記裝了,繼續搗鼓,參考:http://xueliang1yi.blog.163.com/blog/static/1145570162012102114635764/

1、報錯一 沒用gcc

安裝過程 yum install cpp yum install binutils yum install glibc yum install glibc-kernheaders yum install glibc-common yum install glibc-devel yum install gcc yum install make

注意gcc依賴了很多東西,有些包可能系統已經 裝了,有些沒有,防止出意外,最好都走一遍

2、報錯二,沒有tcl8.5, 安裝tcl8.5,過程如下下載地址:http://downloads.sourceforge.net/tcl/tcl8.5.10-src.tar.gz安裝過程tar -zxvf tcl8.5.tar.gz./configuremakemake install

3、安裝redismakemake test //檢查一下,看看有沒有問題make install

如果make繼續報錯,信息如下:error: jemalloc/jemalloc.h: No such file or directory執行 make MALLOC=libc 就行注意的是,為了防止出意外,make失敗后在make的話,清理一下,執行make clean

這樣redis2.8就裝好了,也可以運行mysql -u root -pxxx 庫名稱--skip-column-names --raw < events_to_redis.sql | redis-cli --pipe,接下來準備正式將這百萬數據導入redis,先查找redis通訊協議規范,資料上是這樣寫的:

Redis請求參數的通用格式如下:

*<參數數量> CR LF $<第1個參數字節數> CR LF <參數數據> CR LF ... $<第N個參數字節數> CR LF <參數數據> CR LF舉個例子,要使用SET命令在Redis中存儲一條key=mykey,value=myvalue的數據,則客戶端發送給Redis的服務器協議如下:

*3 $3 SET $5 mykey $7 myvalue最終發給Redis服務器的二進制數據用字符串表示是:

*3/r/n$3/r/nSET/r/n$5/r/nmykey/r/n$7/r/nmyvalue/r/n

好,接下來開始,按下回車:

All data transferred. Waiting for the last reply...Last reply received from server.errors: 0, replies: 1174192

完成的效率驚人,117萬多的記錄19秒導入!

如果覺得樣本源mysql的百萬計數據不過癮,也簡單,用下面的語句迅速在一個表內復制

INSERT INTO 表名SELECT *FROM 表名

經測,復制200萬數據需要10分鐘,40萬數據需要30分鐘左右,也就是2變4、4變8、8變16,很快的喲,不過得注意我在該表沒設置主鍵。

其他一些參考資料:

Redis應用場景:http://blog.csdn.net/hguisu/article/details/8836819

phPRedis中文手冊——《redis中文手冊》 php版:http://www.CUOXin.com/zcy_soft/archive/2012/09/21/2697006.html

淺談Redis數據庫的鍵值設計:http://blog.nosqlfan.com/html/3033.html

nosql應用場景——用redis打造山寨twitter:http://blog.csdn.net/exsuns/article/details/6358414 http://www.CUOXin.com/jackluo/archive/2013/06/27/3158974.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广南县| 丹东市| 西青区| 卓资县| 新巴尔虎左旗| 合阳县| 井研县| 嘉峪关市| 沾化县| 晋中市| 青田县| 邹平县| 平遥县| 万源市| 团风县| 建昌县| 平利县| 永胜县| 菏泽市| 墨玉县| 齐河县| 台南县| 宁明县| 浮山县| 拜泉县| 石首市| 全州县| 绵竹市| 英吉沙县| 阿城市| 盘山县| 香格里拉县| 曲沃县| 腾冲县| 富顺县| 阿尔山市| 华池县| 宜兰市| 民和| 民和| 札达县|