在虚拟机上安装Redis以及java代码测试 (解压文件方式)

如果没有安装包可去:redis下载页 进行下载   或者 用命令下载和配置安装  

 有了安装包之后,利用WinSCP工具连接虚拟机 不会的 点我查看WinSCP使用方法

连接成功如下

进入虚拟机 home/用户名目录下新建一个rdtar(可自定义)目录

将下载好的redis文件上传至rdtar文件夹中

进入虚拟机终端:进入到当前文件夹下(cd /home/用户名/rdtar):

 解压(tar -zxvf  redis...  提示:记不住可以写几个字符 按tab键 自动补全):

 进入redis解压完成的目录中

 执行make命令 ,等待完成  然后切换到src目录  会看到下面的结构

几个常用的文件解释:

       redis-benchmark:redis性能测试工具

  redis-check-aof:检查aof日志的工具

  redis-check-dump:检查rdb日志的工具

  redis-cli:连接用的客户端

  redis-server:redis服务进程

到此,redis已经安装完成,为了方便运行  可以将 redis-server  redis-cli 拷贝到 redis运行目录 (cp  redis-server  redis-cli  /usr/local/redis  redis目录需要事先创建   mkdir  /usr/local/redis)

然后回到上一级目录(cd ../ ) 将  redis.config 文件也拷贝到 运行文件夹下

现在 redis目录下:

 现在可以进行前端开启redis  (./redis-server

 一般会以后台的方式进行启动 :则需要编辑 redis.config :

       vim /usr/local/redis/etc/redis.conf    如果没有vim命令  yum install vim 即可  vim有文本高亮功能,很棒

  将daemonize的值改为yes

第一次进行后端启动时  需带上配置文件  (./redis-server redis.config

     使用客户端连接操作redis

  /usr/local/redis/redis-cli    当前目录下:    ./redis-cli    

  

自此 , redis初步安装完成


停止redis实例

  /usr/local/redis/bin/redis-cli shutdown

  或者

  pkill redis-server

让redis开机自启

  vim /etc/rc.local

  加入

  /usr/local/redis/redis-server /usr/local/redis/redis.config

一些配置如下:


Redis的配置

  daemonize:如需要在后台运行,把该项的值改为yes

  pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址

  bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项

  port:监听端口,默认为6379

  timeout:设置客户端连接时的超时时间,单位为秒

  loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice

  logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上

  database:设置数据库的个数,默认使用的数据库是0

  save:设置redis进行数据库镜像的频率

  rdbcompression:在进行镜像备份时,是否进行压缩

  dbfilename:镜像备份文件的文件名

  dir:数据库镜像备份的文件放置的路径

  slaveof:设置该数据库为其他数据库的从数据库

  masterauth:当主数据库连接需要密码验证时,在这里设定

  requirepass:设置客户端连接后进行任何其他指定前需要使用的密码

  maxclients:限制同时连接的客户端数量

  maxmemory:设置redis能够使用的最大内存

  appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态

  appendfsync:设置appendonly.aof文件进行同步的频率

  vm_enabled:是否开启虚拟内存支持

  vm_swap_file:设置虚拟内存的交换文件的路径

  vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0

  vm_page_size:设置虚拟内存页的大小

  vm_pages:设置交换文件的总的page数量

  vm_max_thrrads:设置vm IO同时使用的线程数量

更详细的可以点我查看

java代码测试:

1.首先在server端启动redis,启动命令是:(详情请看安装篇) 
./redis-server redis.conf 
2.java建立project,因为jedis包是jdk 1.7编译的,请使用1.7或以上版本的jre环境 
测试代码如下

import redis.clients.jedis.Jedis;
public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        init();
    }

    public static void init(){
        Jedis jedis = new Jedis("192.168.201.142");
        jedis.set("myredis","ok");
        System.out.println(jedis.get("myredis"));
    }
}

若是成功的话,控制台会输出ok的结果,若是报错,请看下面依照实际情况处理。

异常:

1.connection refused:connect的异常

报错信息如下:

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
    at redis.clients.jedis.Connection.connect(Connection.java:207)
    at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
    at redis.clients.jedis.Connection.sendCommand(Connection.java:126)
    at redis.clients.jedis.BinaryClient.set(BinaryClient.java:110)
    at redis.clients.jedis.Client.set(Client.java:47)
    at redis.clients.jedis.Jedis.set(Jedis.java:120)
    at roy.redis.test.Test.init(Test.java:13)
    at roy.redis.test.Test.main(Test.java:8)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at redis.clients.jedis.Connection.connect(Connection.java:184)
    ... 7 more

这可能是两个原因造成的,首先可能是redis的6379端口无法访问,清先在cmd中输入命令 
telnet 192.168.201.142 6379 
看看可不可以访问redis-server机器的6379端口,如果不能访问,需要在远程机器关掉防火墙或者添加允许通过 
1)使用root用户登录,vi /etc/sysconfig/iptables,添加如图所以一行 
这里写图片描述 
2)输入命令service iptables restart重启防火墙

或者可以直接root用户使用命令service iptables stop关闭防火墙。

防火墙检查完后,如果还是出现上述问题,说明redis还有地方需要配置,redis默认是只有本机可以访问的,想要远程访问需要修改redis.conf配置文件。 
进入redis.conf目录,并使用vi命令打开,找到bind那行修改后,wq保存退出,重启redis-server。 
这里写图片描述

bind 后加的是允许访问的ip 
bind 127.0.0.1代表只有本机可以访问,可以将允许访问的ip加入,也可以直接注释掉这一行,这样所有机器都可以访问。

2.DENIED Redis is running in protected mode

报错信息如下:

Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 
1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 
2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 
3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 
4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.
    at redis.clients.jedis.Protocol.processError(Protocol.java:127)
    at redis.clients.jedis.Protocol.process(Protocol.java:161)
    at redis.clients.jedis.Protocol.read(Protocol.java:215)
    at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
    at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239)
    at redis.clients.jedis.Jedis.set(Jedis.java:121)
    at roy.redis.test.Test.init(Test.java:13)
    at roy.redis.test.Test.main(Test.java:8)

报错信息很长,但是主要是说redis开启了protected mode,这也是Redis3.2加入的新特性,开启保护模式的redis只允许本机登录,同样设置在配置文件redis.conf中,如图 
这里写图片描述 
这里原来是yes代表开启了保护模式,后面可以填密码也可以填no代表关闭,我们这里选择关闭保护模式,wq保存退出后再重启redis-server

此时应该就可以成功操作了

猜你喜欢

转载自blog.csdn.net/loveer0/article/details/82428819
今日推荐