1. 安裝準備:
安裝包:redis-4.0.14.tar.gz
下載地址:https://redis.io/download
reids命令參考:http://doc.redisfans.com
2. 安裝:
上傳,解壓,提取和編譯redis
[root@hadoop104 software]# tar -zxvf redis-4.0.14.tar.gz -C /opt/module/
[root@hadoop104 redis-4.0.14]# make //編譯
[root@hadoop104 redis-4.0.14]# make install PREFIX=/opt/module/redis //安裝到指定的路徑下
可能出現的問題:
1.make之前出現該錯誤
make[1]: *** [adlist.o] 錯誤 127
原因:因爲Redis是C實現的,需要gcc來進行編譯,所以原因是系統未安裝gcc
解決辦法:yun install gcc-c++ -y
2. make時出現該錯誤:
zmalloc.h:50:31: 錯誤:jemalloc/jemalloc.h:沒有那個文件或目錄
原因:關於分配器allocator, 如果有MALLOC 這個 環境變量, 會有用這個環境變量的 去建立Redis。而且libc 並不是默認的 分配器, 默認的是 jemalloc, 因爲 jemalloc 被證明 有更少的 fragmentation problems 比libc。但是如果你又沒有jemalloc 而只有 libc 當然 make 出錯。 所以加這麼一個參數。
解決辦法:make MALLOC=libc
3. make install時出現該錯誤:
make: *** 沒有規則可以創建目標“install”。 停止。
原因:沒有在正確的路徑下執行
解決:在解壓後的文件路徑下,make之後在執行該命令
3. 測試:
在安裝成功之後進入/opt/module/redis目錄下,只有一個bin目錄進入(redis.conf開始並沒有)
開啓redis服務端(默認前臺啓動)
./redis-server
這樣一直處於監聽狀態,ctrl+c就退出了,下面我們改爲啓動守護進程。
後臺啓動
將解壓後的redis中的redis.conf複製一份到安裝目錄
[root@hadoop104 redis-4.0.14]# cp redis.conf /opt/module/redis/bin/
完成之後,回到/opt/module/redis/bin目錄下(也就是之前說的redis.conf)
進入redis.conf,修改下面的配置
然後再次啓動redis服務端,就會啓動了守護進程,在後臺運行。
./redis-server redis.conf //需要手動指定加載的配置文件,並查看是否成功
啓動客戶端測試:
./redis.cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name hello
OK
127.0.0.1:6379> get name
"hello"
4. redisDesktopManager連接問題
軟件下載地址:https://redisdesktop.com/download
安裝完成之後,在window上使用redisDesktopManager連接在Linux上安裝好的redis,但是就是連接不上,問題可能有下列幾種:
- 不允許公網連接
- 防火牆禁止了redis端口
- Redis.conf 下 bind127.0.0.1要註釋掉
- Redis.conf 下 requirepass foobared配置密碼
問題1解決方案:
設置redis允許遠程登錄
爲了redis的安全性,redis默認是不允許公網連接的。
問題2解決方案:
- 1vim /etc/sysconfig/iptables
- 在這個文件中仿照22端口,將redis需要的6379端口填寫進去:-A INPUT -p tcp-m state --state NEW -m tcp --dport 6379 -j ACCEPT(注意:這段代碼需要放置在22端口的下面,否則無法成功)
- 重啓防火牆: serviceiptables restart
問題3解決方案:
問題4解決方案:
連接成功:
5 JedisAPI
導入下面的依賴
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.2</version> </dependency>
Jedis jedis = new Jedis("192.168.1.104",6379); //創建jedis對象,傳入連接的主機名以及端口便可直接調用api操作 //set增、改 //String result = jedis.set("address", "朝陽"); String result = jedis.set("address", "海淀"); //get查 String result1 = jedis.get("address"); //del刪 String result2 = jedis.del("address"); System.out.println(result); System.out.println(result1); System.out.println(result2);