这里以Centos7+Redis3.0为例:
一、Centos7网络适配器设置:
二、Eclipse中配置Redis的配置文件:
<!-- 配置JedisConnectionFactory -->
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<!-- hostName:服务器 value:虚拟机中centos上的ip地址 -->
<property name="hostName" value="192.168.107.131" />
<!-- Port:redis服务器端口号 默认值是6379 -->
<property name="port" value="6379" />
<!-- password:连接redis时所需要的密码 -->
<!-- <property name="password" value="password" /> -->
<!-- poolConfig:连接池配置对象 -->
<property name="poolConfig" ref="poolConfig" />
</bean>
主要注意下面两行:
<property name="hostName" value="192.168.107.131" /> <!-- value:虚拟机中centos上的ip地址-->
<property name="port" value="6379" /> <!--redis服务器端口号-->
注:保证在本机上能ping通虚拟机中的Centos系统的ip,查看Centos上ip地址的命令:ifconfig
三、测试代码:
public class RedisDemo {
@Test
public void redisDemo() {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
RedisTemplate redisTemplate = (RedisTemplate) context.getBean("redisTemplate");
User user = new User ();
user.setId(1L);
user.setUserName("user_name_1");
user.setNote("Note1");
//将user对象存储到redis缓存中
redisTemplate.opsForValue().set("user_1",user);
redisTemplate.opsForValue().set("sunhui", "helloworld");
//从redis缓存中获取user对象
User user1 = (User)redisTemplate.opsForValue().get("user_1");
System.out.println(user1.getUserName());
}
}
四、运行测试代码,发现出错:
五、分析原因并解决:
1、redis.conf文件的配置信息未修改:
配置文件中的bind为127.0.0.1,默认只能本机访问(虚拟机),需要改成指定的ip,我这里直接改成0.0.0.0
2、Centos防火墙未关闭,解决方法关闭默认防火墙:
[root@localhost redis]# systemctl stop firewalld.service
查看防火墙状态(关闭后显示not running,开启后显示running):firewall-cmd --state
3、 没有将redis 端口规则添加到 iptables 里面,执行下面代码:
[root@localhost redis]# iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
温馨提示:一般如果配置好了redis配置文件后出现连接不上Centos上的redis的原因就是虚拟机上的防火墙未关闭,本人的原因是:没有将redis端口规则添加到iptables中!
六、成功连接Centos上的Redis
小结:缘分拉近了你我距离,CSND让你我相识!