一 、linux安装redis:
1、获取redis资源
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2、解压
tar xzvf redis-4.0.8.tar.gz
3、安装
cd redis-4.0.8
make
cd src
make install PREFIX=/usr/local/redis
4、移动配置文件到安装目录下
cd ../
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc
5.配置redis为后台启动
vim /usr/local/redis/etc/redis.conf //将daemonize no 改成daemonize yes
6、将redis加入到开机启动
vim /etc/rc.local //在里面添加内容:/usr/local/redis/bin/redis-server
/usr/local/redis/etc/redis.conf (意思就是开机调用这段开启redis的命令)
7、将redis-cli,redis-server拷贝到bin下,让redis-cli、redis-server指令可以在任意目录下直接使用
cp /usr/local/redis/bin/redis-server /usr/local/bin/
cp /usr/local/redis/bin/redis-cli /usr/local/bin/
8、开启redis
redis-server /usr/local/redis/etc/redis.conf
9、redis常用命令
- 运行命令:redis-cli -p 6379 (6379是redis的端口)
- b.查看redis密码:config get requirepass (没设置密码的如下图:
) - 设置redis密码:config set requirepass ****(****为你要设置的密码),设置成功的话会返回‘OK’字样
- 删除安装目录:rm -rf /usr/local/redis
- 删除所有redis相关命令脚本:rm -rf /usr/bin/redis-*
- /删除redis解压文件夹:rm -rf /root/download/redis-4.0.4
二 、springboot整合redis:
1、pom里面引入jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<!-- 不依赖redis的异步客户端lettuce -->
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入redis的客户端驱动jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
在这里插入代码片
2、自定义RedisTemplate序列化器
@Configuration
public class RedisTemplateConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 使用Jackson2JsonRedisSerialize 替换默认序列化
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// 设置value的序列化规则和 key的序列化规则
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
3、yml里面配置redis的连接信息
三 、springboot测试redis连接:
1、编写控制器
@Slf4j
@Controller
@RequestMapping(value = "/index")
public class indexController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@GetMapping(value = "/aaa")
public String index(){
redisTemplate.opsForValue().set("aaa","奥利给!!!!");
String redisImg =(String) redisTemplate.opsForValue().get("aaa");
log.info("redis里面的数据is[{}]",redisImg);
log.info("进来啦!!!");
return "index";
}
}
页面访问:http://localhost:8090/index/aaa
报错!!!
2、springboot连接redis报connect timed out 原因分析:
- 先ping 一下服务器
没什么问题! - 修改redis.conf文件,将 bind 127.0.0.1这一行注释掉,或是将127.0.0.1修改为0.0.0.0(redis默认只支持本地连接,修改为0.0.0.0时,这样就可以支持外机连接了)
还是不行!! - 修改redis.conf文件为 protected-mode no,关闭保护模式,相当于关闭了redis的“防火墙”,允许其他服务连接redis
还是不行啊!!! - 关闭访问墙:service iptables stop
关闭成功后,继续不行!!!! - 因为我用的阿里云服务器,阿里默认屏蔽了很多端口,得自己加安全组,如下图:
继续访问:http://localhost:8090/index/aaa
成功!!!!!!!!!!!!
END!