springboot整合redis单机数据库

1.下载redis数据库

下载地址:https://redis.io/download
springboot整合redis单机数据库_第1张图片

将下载完的redis-5.0.3.tar.gz文件上传到linux服务器的指定目录下,本次上传目录为/install。
执行命令解压:tar -zxvf redis-5.0.3.tar.gz,解压后如下图:
springboot整合redis单机数据库_第2张图片

2.编译安装

cd redis-5.0.3
make

此时有报错:
springboot整合redis单机数据库_第3张图片
提示cc命令找不到,此时需要安装gcc插件,执行命令yum install gcc,安装完之后,再次执行make命令,仍然有错误提示:
springboot整合redis单机数据库_第4张图片
此时,在执行make命令的时候,修改命令为make MALLOC=libc继续安装,即可解决该问题。
继续安装:

make install

看到如下提示信息,说明安装完成。
springboot整合redis单机数据库_第5张图片
有时候,在执行make install命令的时候,会提示如下错误:cc: …/deps/hiredis/libhiredis.a: No such file or directory,此时需要进入到redis下的deps目录下,执行如下命令make lua hiredis linenoise
springboot整合redis单机数据库_第6张图片
回到主目录再次执行make install命令即可安装成功。
拷贝安装文件到指定目录:

cp -r redis-5.0.3 /usr/local/redis

在redis安装目录下,有个redis-server执行文件,用于启动redis服务端,我们执行这个命令:
springboot整合redis单机数据库_第7张图片
看到如上所示回显信息,则说明redis安装成功。但是,此时redis并非以守护进程运行,一旦我们使用ctrl+c终止会话,redis进程也将被终止;同时,我们发现登录redis不需要任何账号密码,这对于数据安全性而言,具有很大隐患。接下来,我们通过修改配置来进行各种设置。

3.配置redis

redis的各种配置主要是修改redis,conf文件:
springboot整合redis单机数据库_第8张图片
(1)启用守护进程方式运行
使用编辑命令vim或者vi编辑redis.conf文件,找到daemonize no,将"no"修改为yes,如下所示:
springboot整合redis单机数据库_第9张图片
(2)修改redis监听端口
继续在redis.conf文件中查找port关键字,如下:
springboot整合redis单机数据库_第10张图片
修改6379为所需端口号,本次不做修改。
(3)修改绑定的主机地址
搜索bind关键字,默认绑定地址为127.0.0.1,即只允许本机访问,我们将其修改为0.0.0.0,这样外网也就可以访问redis了:
springboot整合redis单机数据库_第11张图片
(4)修改redis登录所需密码
上一步我们将redis修改为可以被任何一台机器访问,这样很不安全,所以我们需要设置密码。在redis.conf配置文件中搜索requirepass,将注释放开,设置自定义密码,本次我设置的密码是123456,如下:
springboot整合redis单机数据库_第12张图片
(5)关闭保护模式
上一步设置了redis访问密码,此处就可以将redis默认的保护模式关闭了,搜索protected-mode,将其设置为no,如下:
springboot整合redis单机数据库_第13张图片
(6)设置超时时间
当客户端长时间不使用连接时,可以将连接关闭,修改redis.conf中的timeout值,默认是0,修改为300,单位是秒,即某个连接5分钟不使用,就回收该链接:
springboot整合redis单机数据库_第14张图片

4.启动与连接redis

(1)启动redis服务
配置完成之后,我们尝试启动redis服务,使用如下命令启动:

cd src/
./redis-server ../redis.conf

回显信息如下:
在这里插入图片描述
(2)使用客户端连接

./redis-cli -a 123456

-a 123456表示使用123456密码作为登录认证,回显信息如下:
在这里插入图片描述
说明连接成功

5.修改防火墙配置

修改防火墙配置,使6379端口可以被外部访问:

vim /etc/sysconfig/iptables

在里边加入加入如下访问规则:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

重启防火墙后生效。
springboot整合redis单机数据库_第15张图片

6.springboot整合redis单机模式

(1)引入maven依赖
根pom文件中引入如下依赖:

 
 
     org.springframework.boot
     spring-boot-starter-data-redis

(2)配置application.yml文件
springboot全局配置文件applicaiton.yml中加入如下redis单机配置项:

spring:
  #redis单点配置
  redis:
    database: 0
    host: 192.168.172.129
    port: 6379
    password: 123456
    jedis:
      pool:
        max-active: 8
        max-idle: 8
        max-wait: -1ms
        min-idle: 0

(3)新建实体类User用于测试,需要实现java.io.Serializable接口。

public class User implements Serializable {
    private Long id;

    private String name;

    private Byte sex;

    private String phone;

    private Byte age;

    private Boolean status;

    private String address;

    //getter,setter
}

(4)新建controller用于测试:

@RestController
@RequestMapping("/test/redis")
public class RedisTestController {
    @Autowired
    RedisTemplate redisTemplate;
    @Autowired
    StringRedisTemplate stringRedisTemplate;

    @GetMapping("/single")
    public void testWriteAndReadRedis(){
        ValueOperations operations=stringRedisTemplate.opsForValue();
        //存入一个string类型的值
        operations.set("name","三国演义");
        //获取string类型的值
        System.out.println(operations.get("name"));
        ValueOperations valueOperations = redisTemplate.opsForValue();
        User user=new User();
        user.setAddress("陕西西安");
        user.setId(new Date().getTime());
        user.setSex((byte)1);
        //存入一个对象
        valueOperations.set("user",user);
        //获取一个对象
        System.out.println(valueOperations.get("user"));
    }
   }

访问url:https://localhost:8081/test/redis/single ,查看控制台日志打印:
在这里插入图片描述
说明springboot整合redis单机模式成功。

在上面的例子中,可以看到:操作字符串的时候,我们使用的是StringRedisTemplate,操作对象的时候,使用的是RedisTemplate,两者的关系是:
A.StringRedisTemplate是RedisTemplate的子类:
springboot整合redis单机数据库_第16张图片
他们对于对key值进行序列化的时候,默认都是采用StringRedisSerializer方式,但是对于value值进行序列化的时候,StringRedisTemplate仍然采用StringRedisSerializer方式,而RedisTemplate使用的是JdkSerializationRedisSerializer。尽管如此,他们操作redis的方法都是一样的。即通过opsForValue(),opsForZset(),opsForSet()等方法获取一个对象,然后再使用该对象完成数据的读写。

你可能感兴趣的:(linux)