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通了。

 

以上是所有内容,不足之处欢迎指出,互相交流才有进步!

相关文章
相关标签/搜索