CentOs7 Redis6.0.6安裝
1、什么是redis
redis是一種nosql數(shù)據(jù)庫(kù),他的數(shù)據(jù)是保存在內(nèi)存中,同時(shí)redis可以定時(shí)把內(nèi)存數(shù)據(jù)同步到磁盤(pán),即可以將數(shù)據(jù)持久化,并且他比memcached支持更多的數(shù)據(jù)結(jié)構(gòu)(string,list列表[隊(duì)列和棧],set[集合],sorted set[有序集合] hash(hash表))
2、為什么要使用redis
當(dāng)我們做了一個(gè)項(xiàng)目,比方說(shuō)個(gè)人博客,我們把這個(gè)項(xiàng)目發(fā)布到自己的服務(wù)器,一般來(lái)說(shuō),我們做的這個(gè)項(xiàng)目沒(méi)有商用,訪問(wèn)量會(huì)很小,這個(gè)時(shí)候,我們不使用redis也可以,可以要訪問(wèn)量直接經(jīng)過(guò)mysql,我們都知道,mysql是在磁盤(pán)上面,讀取需要一點(diǎn)時(shí)間,訪問(wèn)量小的時(shí)候,這些時(shí)間我們可以忽略不及。 但是,當(dāng)我們做了一個(gè)大型的商用項(xiàng)目,例如淘寶,那么訪問(wèn)量就會(huì)成幾何數(shù)上升,特別是雙十一的時(shí)候,并發(fā)量更是達(dá)到頂峰,這個(gè)時(shí)候,如果我們還是用mysql,那么大量的訪問(wèn)會(huì)讓服務(wù)器處理速度非常的慢,甚至宕機(jī),所以這個(gè)時(shí)候我們就要使用redis redis是在內(nèi)存上面,我們知道內(nèi)存讀取數(shù)據(jù)非常的快,當(dāng)大量的訪問(wèn)量余姚訪問(wèn)某一個(gè)數(shù)據(jù)的時(shí)候,我們把這個(gè)數(shù)據(jù)存放在redis里面,那么這樣,我們的服務(wù)器就不會(huì)宕機(jī)。
3、CentOs7下安裝Redis
3.1、安裝wget下載工具
yum -y install wget
3.2、使用wget工具下載相應(yīng)版本的Redis:http://download.redis.io/releases/
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
3.3、這里也可以用下好的redis壓縮包
檢查是否有編譯環(huán)境(更新或安裝)
yum install gcc-c++
解壓下載的Redis軟件,并移動(dòng)到/use/local下
tar -zxvf redis-5.0.5.tar.gz
mv redis-5.0.5 /usr/local/
進(jìn)入Redis解壓文件夾編譯Redis源碼(注意沒(méi)有 gcc ,make以后會(huì)出錯(cuò),make完自愿 make install 測(cè)試 如果都是install 就沒(méi)問(wèn)題)
cd /usr/local/redis-5.0.5/
make
注意.redis.conf 配置文件默認(rèn)在redis的根目錄
啟動(dòng)redis,進(jìn)入redis的src目錄?
java ./redis-server ../redis.conf
會(huì) 這時(shí)候涉及到后臺(tái)啟動(dòng) 還是前臺(tái)啟動(dòng),也就是會(huì)不會(huì)出現(xiàn)redis 的經(jīng)典logo,只需要在redis.conf配置文件中更改,這邊建議修改redis.conf配置留到最后一起修改,我只是在這里給大家提議一下
# 修改配置文件可以改變改變啟動(dòng)方式
daemonize no\yes
查看Redis的進(jìn)程信息
ps -ef | grep ?redis
如果啟動(dòng)了,會(huì)顯示如下:
[root@localhost src# ps -ef |grep redis
root 58043 1 0 14:47 ? 00:00:00 ./redis-server *:6379
root 58080 9737 0 14:47 pts/0 00:00:00 grep —color=auto redis
4、進(jìn)入redis
cd到redis的src目錄執(zhí)行如下操作?
# 本機(jī)可簡(jiǎn)寫(xiě)為 ./redis-cli?
上述情況 如果存入中文,中文回顯會(huì)亂碼?
./redis-cli --raw (這樣就不會(huì)亂碼)
5、Jedis介紹
Redis不僅是使用命令來(lái)操作,現(xiàn)在基本上主流的語(yǔ)言都有客戶(hù)端支持,比如java,C.C#、C++.php. Node.js. Go 等。 在官方網(wǎng)站里列一些Java的客戶(hù)端,有Jedis, Redisson、 Jredis、 JDBC-Redis、等其中官方推薦使用Jedis和 Redisson。在企業(yè)中用的最多的就是Jedis,下面我們就重點(diǎn)學(xué)習(xí)下Jedis。Jedis同樣也是托管在github上,地址:https://github.com/xetorthio/jedis
==此時(shí)就需要開(kāi)放我們CentOS系統(tǒng)的端口號(hào)!,重點(diǎn),不開(kāi)放6379端口 ping是通不了的 后臺(tái)想去通過(guò)Jedis操作redis 鏈接不上==
6、CentOS開(kāi)放端口
1、運(yùn)行命令:
firewall-cmd --get-active-zones
2、執(zhí)行如下命令命令:
firewall-cmd --zone=public --add-port=6379/tcp --permanent
3、重啟防火墻,運(yùn)行命令:
firewall-cmd --reload
4、查看端口號(hào)是否開(kāi)啟,運(yùn)行命令:
firewall-cmd --query-port=6379/tcp
?做完以上操作 就會(huì)把CentOS的防火墻打開(kāi)6379的端口
7、Java連接Redis
導(dǎo)入jar包
jedis-2.9.0.jar
commons-pool2-2.6.2.jar 這里的jar包,網(wǎng)上都有
java連接測(cè)試
public class Testredis {
? ?
public static void main(String[] args) {
? ? ? ? ?
//建立連接
? ? ? ?
Jedis jedis = new Jedis("ip地址",6379);
? ? ? ?System.out.println(jedis.ping());
? ? ? ? ??
/
/關(guān)閉資源? ? ? ? ?
jedis.close();
? ?
}?
}
單實(shí)例連接
//這里使用 的是jedis-2.9.0.jar
public class TestRedis {
? ?
public static void main(String[] args) {
? ?
//建立連接
? ?
Jedis jedis = new Jedis("ip地址",6379);
? ?
//獲取數(shù)據(jù)
? ?
String test = jedis.get("test");
? ?
System.out.println("test = " + test);
? ?
//設(shè)置屬性
? ?
jedis.set("test","hi,這是第一次設(shè)置的key值");
? ?
//獲取數(shù)據(jù)
? ?
test = jedis.get("test");
? ?
System.out.println("test = " + test);
? ?
//關(guān)閉資源
? ?
jedis.close();
? ?
}?
}
連接池連接
public class TestRedis01 {
? ? ? ?
public static void main(String[] args) {
? ? ? ?
//1 獲得連接池配置對(duì)象,設(shè)置配置項(xiàng)
? ? ? ?
JedisPoolConfig config = new JedisPoolConfig();
? ? ? ?
// 1.1 最大連接數(shù)
? ? ? ?
config.setMaxTotal(30);
? ? ? ?
//1.2 最大空閑連接數(shù)
? ? ? ?
config.setMaxIdle(10);
? ? ? ?
//獲得連接池
? ? ? ?
JedisPool jedisPool = new JedisPool(config,"ip地址",6379);
? ? ? ?
Jedis jedis=null;
? ? ? ?
//3.獲得核心對(duì)象
? ? ? ?
jedis = jedisPool.getResource();
? ? ? ?
//4.設(shè)置數(shù)據(jù)
? ? ? ?
jedis.set("name","這是連接池設(shè)置的key值");
? ? ? ?
//5.獲得數(shù)據(jù)
? ? ? ?
String name = jedis.get("name");
? ? ? ?
System.out.println("name = " + name);
? ? ? ?
//6.關(guān)閉資源
? ? ? ?
jedis.close();
? ?
}?
}
測(cè)試連接

安裝可能會(huì)遇到的坑
如果是啟動(dòng)失敗,檢查下redis的conf配置文件
因?yàn)閞edis默認(rèn)bind 127.0.0.1,所以你會(huì)理所當(dāng)然地想到去redis的配置文件redis.conf將“bind127.0.0.1”注釋掉。認(rèn)為這樣就可以順利訪問(wèn)了,其實(shí)還真不能解決,我們?nèi)匀粫?huì)得到異常,異常的信息給我們提示了很多方法,其中有一個(gè)方法就是讓我們將protected mode關(guān)閉掉。原來(lái)是redis默認(rèn)開(kāi)啟了protected mode,保證只有主機(jī)才能訪問(wèn)到。所以正確解決jedis conneciton refused的解決方案如下: 首先關(guān)掉redis-server,打開(kāi)redis的配置文件redis.conf,將bind 127.0.0.1注釋掉。 這里別注釋錯(cuò)了 因?yàn)榕渲梦募路臅r(shí)候會(huì)有個(gè)已經(jīng)注釋了的bind 127.0.0.1,不要理,繼續(xù)往下翻就會(huì)出現(xiàn)正主,果斷注釋掉。 找到配置文件中protected-mode,默認(rèn)protected mode yes,需要將其改為protected mode no 此時(shí)在重新啟動(dòng)redis。用在運(yùn)行java文件 就會(huì)發(fā)現(xiàn) 可以獲取到redis的key了。
這里如果redis那邊正確的配置了,那么打印的System.out.println(jedis.ping());
會(huì)打印PONG
也就代表沒(méi)問(wèn)題了,之所以寫(xiě)這些 并不是安裝redis會(huì)有問(wèn)題,而是配置redis出問(wèn)題會(huì)導(dǎo)致 java鏈接不上redis,網(wǎng)上很多教程是都不是使用的默認(rèn)的防火墻,這里我使用的是默認(rèn)的防火墻添加6379端口。
end~~
記得點(diǎn)贊+關(guān)注哦!
