redis学习笔记——(1)
1. NoSQL&Redis介紹
?????? NoSQL,Not Only SQL,是非關(guān)系型的數(shù)據(jù)庫(kù)。傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)不能滿足超大規(guī)模和高并發(fā)的應(yīng)用。
?????? 是以Key-Value的形式存儲(chǔ),(例如JSON,XML),不一定遵循傳統(tǒng)數(shù)據(jù)庫(kù)的一些基本要求,比如SQL標(biāo)準(zhǔn)、ACID屬性(Atomicity/ Consistency/Isolation/Durability)、表結(jié)構(gòu)等。主要有以下的特點(diǎn):非關(guān)系型的、分步式的、開(kāi)源的、水平可擴(kuò)展的(指能夠連接多個(gè)軟硬件的特性)。
?????? NoSQL適用場(chǎng)景:
????????????? 1)、High performance - 對(duì)數(shù)據(jù)高并發(fā)讀寫(xiě)
????????????? 2)、Huge storage - 對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)
????????????? 3)、High scalability && HighAvailability - 對(duì)數(shù)據(jù)的高可擴(kuò)展性和高可用性
?????? 開(kāi)源的NoSQL數(shù)據(jù)庫(kù):Redis, MongoDB, Cassandra…...
?????? Redis的介紹
?????? Redis是一個(gè)Key-Value存儲(chǔ)系統(tǒng)。它支持存儲(chǔ)的value類型有:string(字符串),list(鏈表),?set(無(wú)序集合),zset(sorted set有序集合)和hash,也可以把redis看成一個(gè)數(shù)據(jù)結(jié)構(gòu)服務(wù)器。這些數(shù)據(jù)類型都支持pust/pop、add/remove及取交集、并集和差集運(yùn)算,Redis支持各種不同方式的排序。數(shù)據(jù)都是緩存在內(nèi)存中的,它也可以周期性的把更新的數(shù)據(jù)寫(xiě)入磁盤(pán)或者把修改操作寫(xiě)入追加的記錄文件,并實(shí)現(xiàn)了master-slave(主從)同步。
?????? Redis提供的API語(yǔ)言包括C、C++、C#、Java、JavaScript、Lua、Objective-C、Perl、PHP、Python、Ruby、Go、Tcl等。
?????? 使用Redis:新浪微博,200+ Server、400 port、4G data.
?????? 使用方式:與memcache相同
????????????? 1. 應(yīng)用程序直接訪問(wèn)Redis數(shù)據(jù)庫(kù);
????????????? 2. 應(yīng)用程序直接訪問(wèn)Redis,只有當(dāng)訪問(wèn)Redis失敗時(shí)才訪問(wèn)MySQL
?????? 應(yīng)用場(chǎng)合:
????????????? 1. 取最新N個(gè)數(shù)據(jù)的操作
????????????? 2. 排行榜應(yīng)用
????????????? 3. 需要精確設(shè)定過(guò)期時(shí)間的應(yīng)用
????????????? 4. 計(jì)數(shù)器應(yīng)用
????????????? 5. Uniq操作,獲取某段時(shí)間所有數(shù)據(jù)排重值
????????????? 6. 實(shí)時(shí)系統(tǒng),反垃圾系統(tǒng)
????????????? 7. Pub/Sub構(gòu)建實(shí)時(shí)消息系統(tǒng)
????????????? 8. 構(gòu)建隊(duì)列系統(tǒng)
????????????? 9. 緩存
????????????? 10. 存儲(chǔ)微博關(guān)注關(guān)系
?????? Redis有庫(kù)無(wú)表無(wú)字段無(wú)行列。MongoDB有庫(kù)有集合(對(duì)應(yīng)于Mysql中的表)
2. Redis的安裝
?????? 官網(wǎng):http://redis.io
?????? 步驟一:
????????????? 下載安裝包:
????????????? wget?http://redis.googlecode.com/files/redis-2.4.17.tar.gz
?????? 步驟二:
????????????? 編譯源代碼:
????????????? tarzxvf redis-2.4.17.tar.gz
????????????? cdredis-2.4.17
????????????? make
????????????? cdsrc
????????????? makeinstall
????????????? 注:make完成后,有產(chǎn)生可執(zhí)行文件
???????????????????? redis-server:redis服務(wù)器的啟動(dòng)程序
???????????????????? redis-cli:redis命令行工具,也可為客戶端
???????????????????? redis-benchmark:redis性能測(cè)試工具(讀寫(xiě))
???????????????????? redis-stat:redis狀態(tài)檢測(cè)工具(狀態(tài)參數(shù)延遲)
?????? 步驟三:(非必須)
????????????? 移動(dòng)文件,便于管理
????????????? mkdir –p /usr/local/redis/bin
????????????? mkdir –p /usr/local/redis/etc
????????????? mv redis-2.4.17/redis.conf/usr/local/redis/etc
????????????? mvmkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli ? redis-server /usr/lcoal/redis/bin
?????? 步驟四:
????????????? 啟動(dòng)redis服務(wù)
? ? ? ? ? ? ? /usr/local/redis/bin/redis-server(有警告,沒(méi)有加載配置文件)
????????????? /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
????????????? Redis服務(wù)端的默認(rèn)連接端口是6379
????????????? Redis默認(rèn)不是后臺(tái)運(yùn)行
?????? 步驟五:
????????????? 客戶端連接
????????????? /usr/local/redis/bin/redis-cli
????????????? 或者其他客戶端:如phpredis
?
[php]?view plaincopyprint??
?????? 步驟六:
????????????? 停止Redis
????????????? /usr/local/redis/bin/redis-clishutdown
????????????? or
????????????? pkill redis-server
3. ?Redis的配置
????????????? daemonize 如果需要在后臺(tái)運(yùn)行,把該項(xiàng)改為yes
????????????? pidfile 配置多個(gè)pid的地址,默認(rèn)在/var/run/redis.pid
????????????? bind 綁定ip,設(shè)置后只接受自該ip的請(qǐng)求
????????????? port 監(jiān)聽(tīng)端口,默認(rèn)為6379
????????????? timeout 設(shè)置客戶端連接時(shí)的超時(shí)時(shí)間,單位為秒
????????????? loglevel 分為4級(jí),debug、verbose、notice、warning
????????????? logfile 配置log文件地址
????????????? databases 設(shè)置數(shù)據(jù)庫(kù)的個(gè)數(shù),默認(rèn)使用的數(shù)據(jù)庫(kù)為0
????????????? save 設(shè)置redis進(jìn)行數(shù)據(jù)庫(kù)鏡像的頻率,保存快照的頻率,第一個(gè)*表示多長(zhǎng)時(shí)間,?????? 第三個(gè)*表示執(zhí)行多少次寫(xiě)操作。在一定時(shí)間內(nèi)執(zhí)行一定數(shù)量的寫(xiě)操作時(shí),自動(dòng)保存快照。可設(shè)置多個(gè)條件。
????????????? rdbcompression 在進(jìn)行鏡像備份時(shí),是否進(jìn)行壓縮
????????????? Dbfilename 鏡像備份文件的文件名
????????????? Dir 數(shù)據(jù)庫(kù)鏡像備份的文件放置路徑
????????????? Slaveof 設(shè)置數(shù)據(jù)庫(kù)為其他數(shù)據(jù)庫(kù)的從數(shù)據(jù)庫(kù)?
????????????? Masterauth 主數(shù)據(jù)庫(kù)連接需要的密碼驗(yàn)證
????????????? Requirepass 設(shè)置登錄時(shí)需要使用的密碼
????????????? Maxclients 限制同時(shí)連接的客戶數(shù)量
????????????? Maxmemory 設(shè)置redis能夠使用的最大內(nèi)存
????????????? Appendonly 開(kāi)啟append only模式
????????????? appendfsync 設(shè)置對(duì)appendonly.aof文件同步的頻率
????????????? vm-enabled 是否虛擬內(nèi)存的支持
????????????? vm-swap-file 設(shè)置虛擬內(nèi)存的交換文件路徑
????????????? vm-max-memory 設(shè)置redis使用的最大物理內(nèi)存大小
????????????? vm-page-size 設(shè)置虛擬內(nèi)存的頁(yè)大小
????????????? vm-pages 設(shè)置交換文件的總page數(shù)量
????????????? vm-max-threads 設(shè)置VMIO同時(shí)使用的線程數(shù)量
????????????? glueoutputbuf 把小的輸出緩存存放在一起
????????????? hash-max-zipmap-entries 設(shè)置hash的臨界值
????????????? activerehashing 重新hash
轉(zhuǎn)載于:https://www.cnblogs.com/dyc-cfc/p/4262616.html
總結(jié)
以上是生活随笔為你收集整理的redis学习笔记——(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: matlab生成HEX文件-任意信号 大
- 下一篇: Bundle Identifier