redis.jpeg
什么是redis
1.Redis是遠(yuǎn)程的
有客戶端和服務(wù)端弯予,客戶端和服務(wù)端可以布置在不同的機(jī)器上李请,兩者經(jīng)過redis自定義的協(xié)議遠(yuǎn)程傳輸和交互的骏令,我們一般說的是服務(wù)端素跺。
2.Redis是基于內(nèi)存的
所有的操作非常高速,性能優(yōu)于比基于硬盤的MySQL要快很多坡锡,又因?yàn)樗械臄?shù)據(jù)和結(jié)構(gòu)存儲(chǔ)于內(nèi)存中非常吃內(nèi)存浪听。
3.Redis是非關(guān)系型數(shù)據(jù)庫
本質(zhì)上也是數(shù)據(jù)庫,但MySQL關(guān)系型數(shù)據(jù)庫存儲(chǔ)時(shí)必須定義數(shù)據(jù)詞典诞丽,而Redis則不需要鲸拥。
redis應(yīng)用場(chǎng)景
1.緩存
某些系統(tǒng)接口比較慢的時(shí)候,可以把一些數(shù)據(jù)放在Redis中緩存起來僧免,下次取數(shù)據(jù)就不進(jìn)行非常耗時(shí)的SQL操作了刑赶,直接從緩存中取數(shù)據(jù),提升系統(tǒng)性能最常用的方法之一懂衩;
2.隊(duì)列
Redis 中有l(wèi)ist接口撞叨,可以存儲(chǔ)list。 使用Push插入隊(duì)列的元素浊洞, 使用 Pop來彈出退出隊(duì)列的元素牵敷,push和pop操作保證了原子性的實(shí)現(xiàn);
3.數(shù)據(jù)存儲(chǔ)
所有的增刪改查都是在Redis中進(jìn)行法希,Redis有硬盤的持久化機(jī)制枷餐,定期進(jìn)行存儲(chǔ),不需要借助MySQL進(jìn)行數(shù)據(jù)存儲(chǔ)铁材,保證了數(shù)據(jù)的完整性和安全性尖淘。
redis下載安裝
下載地址:http://download.redis.io/releases/redis-2.8.13.tar.gz
解壓到/usr/local/redis目錄中,然后依次執(zhí)行以下命令:
cd /usr/local/redismake test
sudo make install
屏幕快照 2017-06-11 下午12.09.18.png
啟動(dòng)redis-server
redis-server
屏幕快照 2017-06-11 下午12.11.08.png
如上圖著觉,redis-server啟動(dòng)成功村生,并監(jiān)聽6379端口。
常用命令說明
redis-server redis服務(wù)器
redis-cli redis客戶端
redis-benchmark redis性能測(cè)試工具
redis-check-aof AOF文件修復(fù)工具
redis-check-rdb RDB文件修復(fù)工具
啟動(dòng)和停止
服務(wù)端啟動(dòng) 默認(rèn)啟動(dòng)如上饼丘,在命令redis-server即啟動(dòng)redis服務(wù)端趁桃。且接受客戶端連接
根據(jù)設(shè)置啟動(dòng)
1: 在 /usr/local/redis目錄下建立bin,etc肄鸽,db三個(gè)目錄把/usr/local/redis/src目錄下的mkreleasehdr.sh卫病,redis-benchmark, redis-check-rdb典徘, redis-cli蟀苛, redis-server拷貝到bin目錄.
2:在etc下,新建配置redis.conf,內(nèi)容如下逮诲。
/usr/local/redis下新建日志文件log-redis.log帜平,并修改當(dāng)前用戶使用權(quán)限幽告。sudo chown -R shoren /usr/local/redis/
啟動(dòng)服務(wù)端:redis-server /usr/local/redis/etc/redis.conf
#修改為守護(hù)模式
daemonize yes
#設(shè)置進(jìn)程鎖文件
pidfile /usr/local/redis/redis.pid
#端口
port 6379
#客戶端超時(shí)時(shí)間
timeout 300
#日志級(jí)別
loglevel debug
#日志文件位置
logfile /usr/local/redis/log-redis.log
#設(shè)置數(shù)據(jù)庫的數(shù)量
默認(rèn)數(shù)據(jù)庫為16,可以使用SELECT 命令在連接上指定數(shù)據(jù)庫iddatabases 16
##指定在多長時(shí)間內(nèi)裆甩,有多少次更新操作冗锁,就將數(shù)據(jù)同步到數(shù)據(jù)文件,可以多個(gè)條件配合
#save#Redis默認(rèn)配置文件中提供了三個(gè)條件:
save 900 1
save 300 10
save 60 10000
#指定存儲(chǔ)至本地?cái)?shù)據(jù)庫時(shí)是否壓縮數(shù)據(jù)
默認(rèn)為yes嗤栓,Redis采用LZF壓縮冻河,如果為了節(jié)省CPU時(shí)間,#可以關(guān)閉該#選項(xiàng)茉帅,但會(huì)導(dǎo)致數(shù)據(jù)庫文件變的巨大.
rdbcompression yes
#指定本地?cái)?shù)據(jù)庫文件名
dbfilename dump.rdb
#指定本地?cái)?shù)據(jù)庫路徑
dir /usr/local/redis/db/
#指定是否在每次更新操作后進(jìn)行日志記錄
Redis在默認(rèn)情況下是異步的把數(shù)據(jù)寫入磁盤叨叙,如果不開啟,可能#會(huì)在斷電時(shí)導(dǎo)致一段時(shí)間內(nèi)的數(shù)據(jù)丟失担敌。
因?yàn)?redis本身同步數(shù)據(jù)文件是按上面save條件來同步的摔敛,所以有#的數(shù)據(jù)會(huì)在一段時(shí)間內(nèi)只存在于內(nèi)存中appendonly no
#指定更新日志條件,共有3個(gè)可選值:
no:表示等操作系統(tǒng)進(jìn)行數(shù)據(jù)緩存同步到磁盤(快).
always:表示每次更新操作后手動(dòng)調(diào)用fsync()將數(shù)據(jù)寫到磁盤(慢全封,安全)
everysec:表示每秒同步一次(折衷,默認(rèn)值)appendfsync everysec
接著桃犬,可以查看日志刹悴,如下,表示啟動(dòng)成功:
屏幕快照 2017-06-11 下午12.27.15.png
關(guān)閉服務(wù)端
強(qiáng)行關(guān)閉強(qiáng)行終止redis進(jìn)程可能會(huì)導(dǎo)致數(shù)據(jù)丟失攒暇,因?yàn)閞edis可能正在將內(nèi)存數(shù)據(jù)同步到硬盤中土匀。
ps axu|grep redis ## 查找redis-server的PID kill -9 PID
命令關(guān)閉向redis發(fā)送SHUTDOWN命令,即
redis-cli SHUTDOWN
Redis收到命令后形用,服務(wù)端會(huì)斷開所有客戶端的連接就轧,然后根據(jù)配置執(zhí)行持久化,最后退出田度。
啟動(dòng)redis-server
redis Kenvin$ ./bin/redis-server etc/redis.conf
啟動(dòng)成功
redis Kenvin$ ps axu|grep redis
屏幕快照 2017-06-11 下午12.30.25.png
啟動(dòng)客戶端
默認(rèn)啟動(dòng)使用命令redis-cli
啟動(dòng)客戶端妒御,按照默認(rèn)配置連接Redis(127.0.0.1:6379)。
指定地址和端口號(hào)使用命令 redis-cli -h 127.0.0.1 -p 6379
關(guān)閉客戶端
redis Kenvin$ redis-cli -h 127.0.0.1 -p 6379
## 簡(jiǎn)單使用set镇饺、get命令
yaoyajiedeMacBook-Pro:~ Kenvin$ redis-cli -h 127.0.0.1 -p 7200
127.0.0.1:7200> set key value12
OK
127.0.0.1:7200> get key
"value12"
127.0.0.1:7200>
127.0.0.1:7200> get key
"value12"