想要使用Redis,首先就要先安装Redis,一般情况下,都是安装在Linux服务器上的。首先从官网进行下载Redis的压缩包,Redis官网点击Download按钮,之后网下滑,安装提示进行下载
如果不想使用官网可以进入中文网Redis中文网
直接下载即可,文件也就几M大小,速度很快。之后通过Xftp或者宝塔面板将Redis文件上传到Linux服务器上或者虚拟机(虚拟机只能使用Xftp,不能使用宝塔),一般上传在opt目录下,可以根据个人喜好存放,没有要求。进入到上传的文件目录,使用命令tar -zxvf redis-6.0.6.tar.gz -C /opt/ 将redis解压到opt目录,当日也可以直接解压在当前目录tar -zxvf redis-6.0.6.tar.gz,影响不大
之后进入解压的redis目录,输入gcc -v检查c语言需要的编译环境版本是否合格,CentOS7默认的gcc版本过低,不能安装Redis,因此需要升级本版
这里我的系统是CentOS8,默认是gcc 8版本,因此可以直接安装,如果不是,则需要进行升级gcc,可以输入yum install gcc-c++ 会自动安装,如果安装之后版本还是过低(Redis6.0需要gcc版本5.3以上),则需要进行升级,依次输入下面的命令
#升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
#让文件永久生效
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
在此输入gcc -v 版本升级成功,在Redis目录下输入make
命令,由于第一次安装有点慢,当安装完成之后,在输入make install
redis安装成功,拷贝一份redis.config文件到/usr/local/bin
,防止自己修改文件之后出现问题无法回退 (cp redis.config /usr/local/bin/
),拷贝之后输入 vim redis.config ,在输入 /daemonize ,找到之后,输入i 进行修改
在命令模式下输入/127
到这里基本配置已经完成,按下ESC按钮,输入:wq
保存退出即可,进入到目录 /usr/local/bin
下,输入 redis-server redis.config启动redis服务,检查一下是否启动成功,输入ps -ef|grep redis
到这里已经启动成功,输入redis-cli -h 127.0.0.1 -p 6379
默认是没有密码的,如果你是在虚拟机调试也没有必要设置密码,config set requirepass abcdefg #设置密码 abcdefg
config get requirepass #查看设置的密码
这里没有设置密码所有没有显示,到此redis已经按照完成。
这里还需要开启端口,否则外部计算机不能访问。
#查询端口是否开放
firewall-cmd --query-port=6379/tcp
#添加端口
firewall-cmd --add-port=6379/tcp --permanent
#重新加载
firewall-cmd --reload
如果你的电脑是云服务器,则需要自己去服务器添加防火墙规则。
接下来是Springboot整合redis:
在pom文件添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
在springboot配置文件中设置(这里是yaml格式)
redis:
host: 主机地址
port: 6379 #redis端口,一般是6379,需要服务器开发端口
password: 123456 #redis的访问密码,如果没有设置,可以不写
lettuce:
pool:
max-idle: 3
min-idle: 0
max-active: 5
max-wait: -1
编写配置类自定义RedisTemplate模板,主页用于序列化解析对象,防止服务器端乱码,也可不写。
@Configuration
public class MyRedisTemplate {
@Bean
public RedisTemplate<String,Object> template(RedisConnectionFactory factory){
RedisTemplate<String,Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.WRAPPER_ARRAY);
jackson2JsonRedisSerializer.setObjectMapper(om);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// 对key序列化
template.setKeySerializer(stringRedisSerializer);
template.setHashKeySerializer(stringRedisSerializer);
// 对value序列化
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
这里可以进行测试一下
//这里是单元测试
@Autowired
@Qualifier("template")
private RedisTemplate template;
@Test
public void test1(){
template.opsForValue().set("tel2",new SMSCode("tel", 83745),300, TimeUnit.SECONDS);//SMSCode需要实现接口 Serializable
System.out.println(template.opsForValue().get("tel2"));
}
到此Linux安装Redis和Springboot整合Redis完成。