1. 什么是redis?
1.1 核心概念
Redis是用C語言開發(fā)的高性能的鍵值對存儲的非關(guān)系數(shù)據(jù)庫丢郊。Redis存儲的數(shù)據(jù)類型有以下幾種:字符(String)皆疹、散列(Hash)不瓶、列表(List)莹桅、集合(Set)坠敷、有序集合(ZSet)
1.2 歷史發(fā)展
2008年奈梳,意大利的一家創(chuàng)業(yè)公司Merzia推出了一款基于MySQL的網(wǎng)站實(shí)時(shí)統(tǒng)計(jì)系統(tǒng)LLOOGG,然而沒過多久該公司的創(chuàng)始人 Salvatore Sanfilippo便對MySQL的性能感到失望圣勒,于是他決定親自為LLOOGG量身定做一個數(shù)據(jù)庫费变,并于2009年開發(fā)完成,這個數(shù)據(jù)庫就是Redis圣贸。 不過Salvatore Sanfilippo并不滿足只將Redis用于LLOOGG這一款產(chǎn)品胡控,而是希望更多的人使用它,于是在同一年Salvatore Sanfilippo將Redis開源發(fā)布旁趟,并開始和Redis的另一名主要的代碼貢獻(xiàn)者Pieter Noordhuis一起繼續(xù)著Redis的開發(fā)昼激,直到今天。
??SalvatoreSanfilippo自己也沒有想到锡搜,短短的幾年時(shí)間橙困,Redis就擁有了龐大的用戶群體。HackerNews在2012年發(fā)布了一份數(shù)據(jù)庫的使用情況調(diào)查耕餐,結(jié)果顯示有近12%的公司在使用Redis凡傅。國內(nèi)如新浪微博、街旁網(wǎng)肠缔、知乎網(wǎng)夏跷,國外如GitHub、Stack Overflow明未、Flickr等都是Redis的用戶槽华。
??VMware公司從2010年開始贊助Redis的開發(fā), Salvatore Sanfilippo和Pieter Noordhuis也分別在3月和5月加入VMware趟妥,全職開發(fā)Redis。
1.3 redis的應(yīng)用場景
緩存(數(shù)據(jù)查詢、短連接亲雪、新聞內(nèi)容勇凭、商品內(nèi)容等等)。(最多使用)
分布式集群架構(gòu)中的session分離义辕。
聊天室的在線好友列表虾标。
任務(wù)隊(duì)列。(秒殺灌砖、搶購璧函、12306等等)
應(yīng)用排行榜。
網(wǎng)站訪問統(tǒng)計(jì)周崭。
數(shù)據(jù)過期處理(可以精確到毫秒)
2.redis在linux下的安裝
2.1 安裝
#安裝C語言環(huán)境(已經(jīng)安裝可跳過)
yum install gcc-c++
#下載壓縮包
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
#解壓
tar -zxvf redis-4.0.1.tar.gz
#進(jìn)入解壓目錄并編譯Redis
cd redis-4.0.1
#進(jìn)行編譯
make
#安裝Redis
make install PREFIX=/usr/local/redis
PREFIX后面的/usr/local/redis是安裝路徑,我們啟動redis的文件都在這里喳张,也可以自定義续镇。
出現(xiàn)如下提示則安裝成功:
make[1]: Entering directory `/root/redis-3.0.6/src'
Hint: It's a good idea to run 'make test' ;)
? ? INSTALL install
? ? INSTALL install
? ? INSTALL install
? ? INSTALL install
? ? INSTALL install
make[1]: Leaving directory `/root/redis-3.0.6/src
2.2拷貝配置文件并運(yùn)行
接下把我們的配置文件redis.conf手動拷貝到安裝路徑,,以便開啟后臺運(yùn)行與遠(yuǎn)程訪問销部。
#拷貝redis.conf文件
cp -r redis.conf /usr/local/redis/bin/
安裝路徑下的bin目錄結(jié)構(gòu)
cd?/usr/local/redis/bin/
好了 現(xiàn)在我們可以輸入命令來運(yùn)行redis了
#開啟服務(wù)端
./redis-server redis.conf
成功提示如下
#開啟新的窗口摸航,運(yùn)行客戶端進(jìn)行連接
cd /usr/redis/
#鏈接此redis
./redis-cli? 或者? ./redis-cli -h 127.0.0.1 -p 6379
-h:指定主機(jī)IP
-p:指定主機(jī)端口
默認(rèn)主機(jī)IP是127.0.0.1 默認(rèn)端口 6379
不填則使用默認(rèn)值
成功并進(jìn)行如下測試
但不可能每次都開兩個窗口,我們需要配置后臺運(yùn)行舅桩;同時(shí)我們用程序連接也需要遠(yuǎn)程連接酱虎,接下來我們進(jìn)行設(shè)置。
2.3 設(shè)置后臺運(yùn)行和遠(yuǎn)程連接
接下里我們在配置文件redis.conf中進(jìn)行相關(guān)的配置
#打開配置文件
vim redis.conf
在vim編輯模式下擂涛,輸入行數(shù)+gg可以快捷跳行读串。例如跳到第138行,輸入:138gg
2.3.1 設(shè)置后臺啟動
將第138行的daemonize no修改為daemonize yes即可
2.3.2 開啟遠(yuǎn)程訪問
將第70行的bind注釋撒妈,第90行將protected-mode改為no
2.3.3 設(shè)置密碼
取消第502行的注釋恢暖,并修改密碼
關(guān)于密碼,設(shè)不設(shè)置密碼使用上是沒有什么區(qū)別的狰右,記錄一下怎么設(shè)置密碼以及保護(hù)模式:
在redis.conf中將requirepass foobared注釋去掉杰捂,并將foobared改為自己想設(shè)置的密碼
注意:設(shè)置了密碼,建議就將protected-mode no改為protected-mode yes棋蚌,即有密碼的情況下嫁佳,打開保護(hù)模式
接下來重啟redis:
#首先查詢到redis的pid后,kill掉,然后重啟
[root@localhost bin]# ps -ef|grep redis
root? ? ? 20940? ? ? 1? 0 12:12 ?? ? ? ? 00:00:18 ./redis-server *:6379
[root@localhost bin]# kill 20940
[root@localhost bin]# ./redis-server redis.conf
后臺啟動成功如下
最后我們使用redis客戶端通過密碼遠(yuǎn)程連接:
#遠(yuǎn)程連接
./redis-cli -h 你服務(wù)器的ip -p 6379 -a 你的密碼
2.3.4 開放6379端口
由于防火墻的原因谷暮,需要打開6379端口防火墻蒿往,才能遠(yuǎn)程訪問:
執(zhí)行命令打開6379端口防火墻,看到success字樣就表明添加成功
firewall-cmd --zone=public --add-port=6379/tcp --permanent
然后重新啟動防火墻湿弦,看到success字樣就表明重啟成功
firewall-cmd --reload
最后可以輸入命令驗(yàn)證6379端口打開是否生效熄浓,看到y(tǒng)es及表示生效
firewall-cmd --zone=public --query-port=6379/tcp
在開放防火墻端口時(shí),如果出現(xiàn)“FirewallD is not running”,說明防火墻就沒打開赌蔑,
通過systemctl status firewalld查看firewalld狀態(tài)俯在,發(fā)現(xiàn)當(dāng)前是dead狀態(tài),即防火墻未開啟娃惯。
通過systemctl start firewalld開啟防火墻跷乐,沒有任何提示即開啟成功。
再次通過systemctl status firewalld查看firewalld狀態(tài)趾浅,顯示running即已開啟了愕提。
如果要關(guān)閉防火墻設(shè)置,可能通過systemctl stop firewalld這條指令來關(guān)閉該功能皿哨。
再次執(zhí)行開放端口命令浅侨。
好啦,我們所有的配置就到這結(jié)束了证膨;雖然不輸入密碼也能登陸如输,但是無法進(jìn)行g(shù)et set操作;剩下的就是同學(xué)們自己去嘗試?yán)病?/p>