记录了redis的安装及服务器上的简单使用。这次下载是记录使用jedis在java程序中去访问redis服务
目录
1.下载相关文件
这里需要使用两个包:jedis 和 pool
地址:(https://mvnrepository.com/artifact/redis.clients/jedis/2.7.0 , https://mvnrepository.com/artifact/org.apache.commons/commons-pool2/2.3)
或者我上传的压缩包里:https://download.csdn.net/download/qq_28198181/10827818
2.配置环境
本人使用的idea,在工程里面 File -> Project Structure ->Libraries 添加两个jar包
下载后的包使用里面的两个jar包比如:
将两个包加载好了后可以看到工程中引用了。
这个时候可以编写代码去看看了
3.编写代码检查
public Class JedisClass{
public void jedisTest() {
/*设置ip和端口
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException:
java.net.SocketTimeoutException:
connect timed out
因为 6379端口没有打开
注释掉redis.conf 中 bind 127.0.0.1 才可以 bind字段默认为: bind 127.0.0.1 这样只能本
机访问redis
注释掉后有个问题 本地直接打不开 所以 本地远程访问: ./bin/redis-cli -h 192.168.174.128
-p 6379
*/
Jedis jedis = new Jedis("192.168.174.128", 6379);
//保存数据
jedis.set("name", "郭二狗");
//获取数据
String name = jedis.get("name");
//关闭
System.out.println("name:" + name);
jedis.close();
}
}
以上写一个方法去连接我的远程redis服务,但是会有几个问题如下:
1.timeout问题
这个问题是在我们编写好上述方法后执行的时候报错:
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException:connect timed out
这个问题解决方法:
第一步:防火墙中开启6379的端口。
具体步骤:
vim /etc/sysconfig/iptables
然后复制
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
粘贴成
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
:wq保存
重启防火墙服务
service iptables restart
第二步:在服务器中的redis-conf注释掉bind 127.0.0.1
具体步骤:
vim redis-conf
# bind127.0.0.1 注意不要被前面的注释文档骗了
:wq 保存
重启服务
./bin/redis-cli shutdown
./bin/redis-server ./redis-conf
现在的话 再次运行程序 应该是可以了
我的截图如下:
但是这样还有一个问题:这样的话服务器上客户端无法启动。
2.本地访问服务错误问题
注释掉redis.conf 中 bind 127.0.0.1 远程可以访问 bind字段默认为: bind 127.0.0.1 这样只能本机访问redis,但是这样后本地访问就会被拒绝找不到127.0.0.1:6379
想了个方法:
当作远程去访问。
使用这个命令就可以了:
./bin/redis-cli -h 192.168.174.128 -p 6379 //-h host -p port
这样就可以使用了:
补充:连接池去访问
//连接池去连接
public void jedisCommonPool() {
//配置连接池对象
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(30);
//设置最大空闲连接数
config.setMaxIdle(10);
//获得连接池
JedisPool pool = new JedisPool(config, "192.168.174.128", 6379);
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.set("names", "郭二狗子");
String s = jedis.get("names");
System.out.println("s:" + s);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
if (pool!=null) {
pool.close();
}
}