linux下搭建redis並解決沒法鏈接redis的問題

 

之前公司在開發階段鏈接的redis一直是正式環境中的,最近老大讓我在搭建一個局域網內的redis用於開發階段時鏈接使用,搭建過程當中也遇到了一些問題,還好已經解決了,在這裏記錄一下。前端

首先是搭建redis,這個比較簡單。java

一、檢查安裝依賴程序nginx

yum install gcc-c++ yum install -y tcl yum install wget 

二、獲取安裝文件c++

wget http://download.redis.io/releases/
這裏面有不少版本,本身選擇須要的下載

三、解壓文件redis

   本身新建一個目錄將redis解壓到裏面spring

tar -zxvf redis-3.2.01.tar.gz mv redis-3.2.01 /usr/local/redis 

四、進入目錄sql

cd /usr/local/redis 

五、編譯安裝後端

make
make install 

六、設置配置文件路徑ruby

mkdir -p /etc/redis cp redis.conf/etc/redis 

七、修改配置文件bash

 redis.conf是redis的配置文件,redis.conf在redis源碼目錄。

 注意修改port做爲redis進程的端口,port默認6379。若是須要搭建redis集羣,千萬別忘了修改端口號。

   redis有兩種啓動方式,直接運行bin/redis-server將之前端模式啓動,前端模式啓動的缺點是ssh命令窗口關閉則redis-server程序結束,不推薦使用此方法。以下圖:

  

   後端模式啓動

   修改redis.conf配置文件, daemonize yes 之後端模式啓動。推薦!

   打開redis.conf,使用命令 :/ daemonize 快速查找到daemonize而後修改。

vi /etc/redis/redis.conf 僅修改: daemonize yes (no-->yes) 

八、啓動

/usr/local/bin/redis-server /etc/redis/redis.conf 

九、查看啓動

ps -ef | grep redis 

十、使用客戶端

redis-cli
>set name david OK >get name "david" 

11.關閉客戶端

redis-cli shutdown 

十二、開機啓動配置

echo "/usr/local/bin/redis-server /etc/redis/redis.conf &" >> /etc/rc.local 

開機啓動要配置在 rc.local 中,而 /etc/profile 文件,要有用戶登陸了,纔會被執行。

1三、設置密碼

由於這是給局域網內的不少人使用,因此設置一個訪問密碼頗有必要。

修改redis.conf文件配置 

使用命令 :/ requirepass 快速查找到 # requirepass foobared 而後去掉註釋,這個foobared改成本身的密碼。而後wq保存。

1四、重啓redis

 sudo service redis restart  這個時候嘗試登陸redis,發現能夠登上,可是執行具體命令是提示操做不容許

  1. redis-cli -h 127.0.0.1 -p 6379  
  2. redis 127.0.0.1:6379>  
  3. redis 127.0.0.1:6379> keys *  
  4. (error) ERR operation not permitted  

嘗試用密碼登陸並執行具體的命令看到能夠成功執行

  1. redis-cli -h 127.0.0.1 -p 6379 -a password
  2. redis 127.0.0.1:6379> keys *
  3. 1) "myset"  
  4. 2) "mysortset"  
  5. redis 127.0.0.1:6379> select 1  
  6. OK  

若是是本身在本機上使用如今已經能夠了,由於我這是局域網內提供給你們使用的因此還須要最後的配置。

當時修改開發的配置文件後,啓動項目報錯。

org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:162) ~[spring-data-redis-1.5.0.RELEASE.jar:1.5.0.RELEASE]
    at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.getConnection(JedisConnectionFactory.java:251) ~[spring-data-redis-1.5.0.RELEASE.jar:1.5.0.RELEASE]
    at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.getConnection(JedisConnectionFactory.java:58) ~[spring-data-redis-1.5.0.RELEASE.jar:1.5.0.RELEASE]
    at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:128) ~[spring-data-redis-1.5.0.RELEASE.jar:1.5.0.RELEASE]

 打開cmd 而後使用 telnet ip 端口 來ping 配置的redis(要保證redis已啓動),發現沒法ping通。

這是由於在redis.conf中有個配置 bind 127.0.0.1 這個是默認只有本機訪問,把這個註釋掉就行了,註釋之後查看redis進程就變爲下面這樣:

[root@localhost redis]# ps -ef | grep redis
root      5655     1  0 11:40 ?        00:00:23 ./redis-server *:6379
root     21184 18040  0 17:33 pts/1    00:00:00 grep --color=auto redis

這個*號就表示容許其它用戶訪問了。而後在用打開本機的 cmd使用 telnet ip 端口 就能ping通了。

 

以上是所有內容,不足之處歡迎指出,互相交流纔有進步!

相關文章
相關標籤/搜索