redis 5.0.x 部署

PS:对于使用者来说,Redis5.0和4.0都是一样的,但是redis 4.0的集群部署需要额外安装ruby的东西,5.0中则集成到了redis-cli,部署起来更方便

1.1 安装Redis

本章基于CentOS 7.9.2009编写而成,由于Linux发行版众多,安装过程可能有些许不同,仅供参考

1、下载Redis源码:wget http://download.redis.io/releases/redis-5.0.13.tar.gz

2、解压:tar xzf redis-5.0.13.tar.gz

3、cd redis-5.0.13/deps/

4、make hiredis lua jemalloc linenoise(编译依赖的库)

5、cd ..

6、编译:make -j 4(4表示使用4核编译,默认是1核,请根据实际情况修改参数)

1.2 部署单机版Redis

1、使用cd命令切换目录到Redis主目录下

2、创建一个文件夹用于存放单机版的数据和配置:mkdir single

3、拷贝一份配置文件到single文件夹:cp redis.conf single/redis.conf

4、切换到single目录:cd single/

5、使用你熟悉的编辑器修改redis.conf文件

第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6379(端口号)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6379.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第171行:logfile ${redis.home}/single/redis.log(日志路径)

 

 第218行:RDB持久化配置,全部注释掉并加上save ""表示关闭RDB持久化

 #save 900 1(每900秒内有1个key修改则进行持久化)

 #save 300 10(每300秒内有10个key修改则进行持久化)

 #save 60 10000(每60秒内有10000个key修改则进行持久化)

 save ""

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第263行:dir ${redis.home}/single/

 

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

6、在single目录下新建一个文件:touch start.sh并加入以下内容

 #!/bin/sh

 #注意:这个目录是指你实际的redis安装目录,比如/home/iceberg/Program/redis-5.0.13

 cd /home/iceberg/Program/redis-5.0.13

 src/redis-server single/redis.conf &

授予其可执行权限chmod 777 start.sh,运行即可启动

7、关闭redis

不要使用Kill -9的方法强制关闭Redis,不仅是Redis,任何程序都不应该使用这个方式关闭!这会使得程序预设的清理代码不执行!!!

在single目录下新建一个文件:touch stop.sh并加入以下内容

 #!/bin/sh

 #注意:这个目录是指你实际的redis安装目录,比如/home/iceberg/Program/redis-5.0.13

 cd /home/iceberg/Program/redis-5.0.13

 src/redis-cli -p 6379 shutdown

 #如果配置了密码要加上-a 你的密码

 #src/redis-cli -p 6379 -a 123456 shutdown

8、redisson配置(redis客户端配置)

(1)包含密码

{

    "singleServerConfig": {

        "address""redis://127.0.0.1:6379",

        "timeout"5000,

        "password""123456",

        "pingConnectionInterval"2000

    },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

    "transportMode""NIO"

}

(2)不包含密码

{

    "singleServerConfig": {

        "address""redis://127.0.0.1:6379",

        "timeout": 5000,

        "pingConnectionInterval": 2000

    },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

    "transportMode""NIO"

}

1.3 部署主从版Redis

1、使用cd命令切换目录到Redis主目录下

2、创建一个文件夹用于存放主从版的数据和配置:mkdir replication

3、进入目录:cd replication

4、创建两个文件夹:mkdir master slave

5、切换到主目录,把配置文件分别拷贝到master和slave,cp redis.conf replication/master/redis.conf、cp redis.conf replication/slave/redis.conf

6、使用你熟悉的编辑器修改redis.conf文件

(1)主redis配置

 第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6379(端口号,主从的端口号必须不一样)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6379.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第171行:logfile ${redis.home}/replication/master/redis.log

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第263行:dir ${redis.home}/replication/master/

 

 #如何设置密码的话,下边两个配置必须同时存在或同时注释掉,且密码必须相同

 第288行:masterauth <master-password>(设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

(2)从redis配置

 第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6380(端口号,主从的端口号必须不一样)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6380.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第171行:logfile ${redis.home}/replication/slave/redis.log

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第263行:dir ${redis.home}/replication/slave/

 

 第281行:slaveof <masterip> <masterport>(配置主节点的ip和端口号)

 

 #如何设置密码的话,下边两个配置必须同时存在或同时注释掉,且密码必须相同

 第288行:masterauth <master-password>(设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

7、启动和关闭脚本与单机版类似,把目录改成主从对应的目录,配置对端口号即可

8、配置

(1)包含密码

{

   "masterSlaveServersConfig":{

      "readMode":"MASTER",

      "slaveAddresses":[

         "redis://127.0.0.1:6381",

         "redis://127.0.0.1:6380"

      ],

      "masterAddress""redis://127.0.0.1:6379",

      "timeout"5000,

      "password""123456",

      "pingConnectionInterval"2000

   },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

   "transportMode":"NIO"

}

(2)不包含密码

{

   "masterSlaveServersConfig":{

      "readMode":"MASTER",

      "slaveAddresses":[

         "redis://127.0.0.1:6381",

         "redis://127.0.0.1:6380"

      ],

      "masterAddress""redis://127.0.0.1:6379",

      "timeout"5000,

      "pingConnectionInterval"2000

   },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

   "transportMode":"NIO"

}

1.4 部署哨兵版Redis

1、使用cd命令切换目录到Redis主目录下

2、创建一个文件夹用于存放哨兵版的数据和配置:mkdir sentinel

3、首先配置好主从节点,并启动(主从的相关配置请参考第三节)

4、创建三个文件夹:mkdir sentinel1 sentinel2 sentinel3

5、复制sentinel.conf到三个文件夹中(注意这里的配置文件不是redis.conf!)

6、sentinel.conf需要修改的地方如下(注意这里的配置文件不是redis.conf!)

(1)sentinel1

#取消注释,允许远程连接

 第17行:protected-mode no

 

 第21行:port 26379(端口号)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第50行:dir ${redis.home}/replication/sentinel1/(数据存储目录)

 

 第69行:sentinel monitor mymaster 10.60.44.87 6379 2(配置哨兵监控哪个主节点,mymaster是主节点的别名,2表示主从切换至少需要2台哨兵节点同意,一般为n/2+1,n表示哨兵节点数)

 

 #配置密码,注释掉表示不需要密码

 第71行:sentinel auth-pass mymaster 123456

 

 #额外增加配置

 #后台运行该redis节点

 daemonize yes

 #日志存储路径

 logfile "${redis.home}/sentinel/sentinel1/redis.log"

(2)sentinel2

 #取消注释,允许远程连接

 第17行:protected-mode no

 

 第21行:port 26380(端口号)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第50行:dir ${redis.home}/replication/sentinel2/(数据存储目录)

 

 第69行:sentinel monitor mymaster 10.60.44.87 6379 2(配置哨兵监控哪个主节点,mymaster是主节点的别名,2表示主从切换至少需要2台哨兵节点同意,一般为n/2+1,n表示哨兵节点数)

 

 #配置密码,注释掉表示不需要密码

 第71行:sentinel auth-pass mymaster 123456

 

 #额外增加配置

 #后台运行该redis节点

 daemonize yes

 #日志存储路径,${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 logfile "${redis.home}/replication/sentinel2/redis.log"

(3)sentinel3

 #取消注释,允许远程连接

 第17行:protected-mode no

 

 第21行:port 26381(端口号)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第50行:dir ${redis.home}/replication/sentinel3/(数据存储目录)

 

 第69行:sentinel monitor mymaster 10.60.44.87 6379 2(配置哨兵监控哪个主节点,mymaster是主节点的别名,2表示主从切换至少需要2台哨兵节点同意,一般为n/2+1,n表示哨兵节点数)

 

 #配置密码,注释掉表示不需要密码

 第71行:sentinel auth-pass mymaster 123456

 

 #额外增加配置

 #后台运行该redis节点

 daemonize yes

 #日志存储路径,${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 logfile "${redis.home}/replication/sentinel3/redis.log"

7、在sentinel1文件夹中新建一个文件,touch start.sh,填入以下内容

 #!/bin/sh

 #注意:这个目录是指你实际的redis安装目录

 cd /home/iceberg/Program/redis-5.0.13

 src/redis-sentinel sentinel/sentinel1/sentinel.conf &

授予其可执行权限chmod 777 start.sh,运行即可启动

其他哨兵把sentinel1改成sentinel2或sentinel3即可

8、关闭Redis与单机版类似,把目录改成哨兵对应的目录,配置对端口号即可

9、配置

(1)包含密码的配置

{

   "sentinelServersConfig":{

      "readMode":"MASTER",

      "sentinelAddresses":[

         "redis://127.0.0.1:26379",

         "redis://127.0.0.1:26389"

      ],

      "masterName":"mymaster",

      "password""123456",

      "pingConnectionInterval"2000

   },

   "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

   "transportMode":"NIO"

}

(2)不包含密码的配置

{

   "sentinelServersConfig":{

      "readMode":"MASTER",

      "sentinelAddresses":[

         "redis://127.0.0.1:26379",

         "redis://127.0.0.1:26389"

      ],

      "masterName":"mymaster",

      "pingConnectionInterval"2000

   },

   "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

   "transportMode":"NIO"

}

1.5 配置集群版Redis

1、使用cd命令切换目录到Redis主目录下

2、创建一个文件夹用于存放集群版的数据和配置:mkdir cluster

3、新建六个文件夹(Redis集群最少三主三从),mkdir master1 master2 master3 slave1 slave2 slave3 ,并复制redis.conf文件进去(这里假设的是一台机器的情况,如果你是用六台机器部署,就建一个文件夹就好)

5、集群相关配置如下

(1)master1

第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6381(端口号)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6381.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第171行:logfile ${redis.home}/cluster/master1/redis.log

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第263行:dir ${redis.home}/cluster/master1/

 

 #如何设置密码的话,下边两个配置必须同时存在或同时注释掉,且密码必须相同

 第288行:masterauth <master-password>(设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

 

 # 开启集群模式

 第814行:cluster-enable yes

 

 #集群内部配置文件

 第822行:cluster-config-file “nodes-6381.conf”

(2)master2

第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6382(端口号,主从的端口号必须不一样)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6382.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录

 第171行:logfile ${redis.home}/cluster/master2/redis.log

 

 #注意:${redis.home}替换成redis的安装目录

 第263行:dir ${redis.home}/cluster/master2/

 

 #下边两个配置必须同时存在,且密码必须相同

 第288行:masterauth <master-password>(设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

 

 # 开启集群模式

 第814行:cluster-enable yes

 

 #集群内部配置文件

 第822行:cluster-config-file “nodes-6382.conf”

(3)master3

 第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6383(端口号,主从的端口号必须不一样)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6383.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录

 第171行:logfile ${redis.home}/cluster/master3/redis.log

 

 第218行:RDB持久化配置,全部注释掉并加上save ""表示关闭RDB持久化

 #save 900 1(每900秒内有1个key修改则进行持久化)

 #save 300 10(每300秒内有10个key修改则进行持久化)

 #save 60 10000(每60秒内有10000个key修改则进行持久化)

 save ""

 

 #注意:${redis.home}替换成redis的安装目录

 第263行:dir ${redis.home}/cluster/master3/

 

 #下边两个配置必须同时存在,且密码必须相同

 第288行:masterauth <master-password>(设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

 

 # 开启集群模式

 第814行:cluster-enable yes

 

 #集群内部配置文件

 第822行:cluster-config-file “nodes-6383.conf”

(4)slave1

第69行:bind 127.0.0.1(注释掉)

第88行:protected-mode no

第92行:port 6391(端口号,主从的端口号必须不一样)

第136行:daemonize yes(后台运行)

第158行:pidfile /var/run/redis_6391.pid(后边的数字改成跟端口号一致)

#注意:${redis.home}替换成redis的安装目录

第171行:logfile ${redis.home}/cluster/slave1/redis.log

#注意:${redis.home}替换成redis的安装目录

第263行:dir ${redis.home}/cluster/slave1/

#下边两个配置必须同时存在,且密码必须相同

第288行:masterauth <master-password>(设置redis的密码,注释掉表示不需要)

第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

#注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

第672行:appendonly yes(开启AOF持久化)

# 开启集群模式

第814行:cluster-enable yes

#集群内部配置文件

第822行:cluster-config-file “nodes-6391.conf”

(5)slave2

第69行:bind 127.0.0.1(注释掉)

第88行:protected-mode no

第92行:port 6392(端口号,主从的端口号必须不一样)

第136行:daemonize yes(后台运行)

第158行:pidfile /var/run/redis_6392.pid(后边的数字改成跟端口号一致)

#注意:${redis.home}替换成redis的安装目录

第171行:logfile ${redis.home}/cluster/slave2/redis.log

#注意:${redis.home}替换成redis的安装目录

第263行:dir ${redis.home}/cluster/slave2/

#下边两个配置必须同时存在,且密码必须相同

第288行:masterauth <master-password>(设置redis的密码,注释掉表示不需要)

第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

#注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

第672行:appendonly yes(开启AOF持久化)

# 开启集群模式

第814行:cluster-enable yes

#集群内部配置文件

第822行:cluster-config-file “nodes-6392.conf”

(6)slave3

第69行:bind 127.0.0.1(注释掉)

第88行:protected-mode no

第92行:port 6393(端口号,主从的端口号必须不一样)

第136行:daemonize yes(后台运行)

第158行:pidfile /var/run/redis_6393.pid(后边的数字改成跟端口号一致)

#注意:${redis.home}替换成redis的安装目录

第171行:logfile ${redis.home}/cluster/slave3/redis.log

#注意:${redis.home}替换成redis的安装目录

第263行:dir ${redis.home}/cluster/slave3/

#下边两个配置必须同时存在,且密码必须相同

第288行:masterauth <master-password>(设置redis的密码,注释掉表示不需要)

第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

#注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

第672行:appendonly yes(开启AOF持久化)

# 开启集群模式

第814行:cluster-enable yes

#集群内部配置文件

第822行:cluster-config-file “nodes-6393.conf”

6、使用单机版的启动脚本将启动上述六个redis实例

7、切换到redis主目录下,执行

#通过-a指定密码

src/redis-cli -a 123456 --cluster create --cluster-replicas 0 10.60.52.134:6381 10.60.52.134:6382 10.60.52.134:6383

输入yes,可以看到如下提示

发现所有16384个槽都分配成功,集群创建完成。

不过此时只有三个主节点,还需要设置一下从节点,这里要记录一下ID和ip:port的对应关系,不要清空了,下一步有用

8、手动添加从节点

我们假设你想要的对应关系是6381(主)-6391(从)、6382(主)-6392(从)、6383(主)-6393(从)

src/redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id cdd3d8faba1cb6a26faba5c2ffcd274b638aa159 10.60.52.134:6391 10.60.52.134:6381

src/redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id faa8847464a78ae58b95c0b2ea895250bd023864 10.60.52.134:6392 10.60.52.134:6382

src/redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id 0b4a8d999b04423a99dfa8d099e77534ecb925a0 10.60.52.134:6393 10.60.52.134:6383

依次执行命令,将从节点添加到集群中,如下图所示:

9、集群完整性检查

集群完整性指所有的槽都必须分配到存活的主节点上,只要16384个槽有一个没有分配给节点则表示集群不完整。我们可以使用check命令检测任意一个节点即可完成检查,输入:

src/redis-cli -a 123456 --cluster check 10.60.52.134:6381

可以看到3主3从,且16384个槽都分配完毕,表示集群完整,如下图所示

10、配置

(1)包含密码的配置

{

    "clusterServersConfig": {

        "readMode""MASTER",

        "nodeAddresses": [

            "redis://10.60.44.57:6371",

            "redis://10.60.44.57:6372",

            "redis://10.60.44.57:6373"

        ],

        "password""123456",

        "pingConnectionInterval"2000

    },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

    "transportMode""NIO"

}

(2)不包含密码的配置

{

    "clusterServersConfig": {

        "readMode""MASTER",

        "nodeAddresses": [

            "redis://10.60.44.57:6371",

            "redis://10.60.44.57:6372",

            "redis://10.60.44.57:6373"

        ].

        "pingConnectionInterval"2000

    },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

    "transportMode""NIO"

}

为了方便修改,以上是展开的配置,但是配置在apollo的时候需要压缩一下,可以搜索任意的在线JSON格式化网站进行压缩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/97752.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商平台api对接货源

如今&#xff0c;电商平台已经成为了人们购物的主要途径之一。 然而&#xff0c;对于电商平台来说&#xff0c;货源对接一直是一个比较棘手的问题。为了解决这个问题&#xff0c;越来越多的电商平台开始使用API来对接货源。 API&#xff0c;即应用程序接口&#xff0c;是一种允…

ToBeWritten之基于ATTCK的模拟攻击:闭环的防御与安全运营

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

IDEA中使用Git

参考文章 1. IDEA中配置Git 2 IDEA 中使用Git 2.1 拉取项目 选择File→New→Project from Version Control。 从码云&#xff0c;github中也都可以拉取&#xff0c;实际工作中可能存在于公司搭建的GitLab中。 复制此项目的git地址&#xff0c;填入URL&#xff0c;Director…

Oracle数据库尚硅谷学习笔记

文章目录 Oracle数据库体系结构简介补充SQL初步导入sql文件别名连接符distinct去重的坑 过滤和排序数据日期格式比较运算其它比较运算符逻辑运算优先级排序 单行函数SQL中不同类型的函数单行函数字符数值日期转换通用 使用条件表达式嵌套查询 多表查询等值连接非等值连接左外连…

大模型综述论文笔记6-15

这里写自定义目录标题 KeywordsBackgroud for LLMsTechnical Evolution of GPT-series ModelsResearch of OpenAI on LLMs can be roughly divided into the following stagesEarly ExplorationsCapacity LeapCapacity EnhancementThe Milestones of Language Models Resources…

设计模式之代理模式与外观模式

目录 代理模式 简介 优缺点 角色职责 实现 运用场景 外观模式 简介 角色职责 优缺点 实现 使用场景 代理模式 简介 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接引用目标对象&#xff0c;代理对象作为…

springboot实战(五)之sql业务日志输出,重要

目录 环境&#xff1a; 一、mybatis-plus之sql分析日志输出 1.配置 2.验证 3.高级输出方式 二、业务日志输出到文件 1.添加log4j2依赖 2.排除logback依赖 3.新增log4j2的配置文件 4.添加配置 5.启动测试 6.给日志请求加个id 6.1、过滤器filter实现 6.2、测试 6.3、…

48、springboot 的国际化之让用户在程序界面上弄个下拉框,进行动态选择语言

上一篇是直接改浏览器的支持语言。 在浏览器上面直接改国际化语言 这次要实现的功能是直接在程序界面动态选择语言。 Locale 代表语言、国家。 ★ 在界面上动态改变语言 应用之所以能动态呈现不同的语言界面&#xff0c;其实关键在于如何确定客户端的Locale&#xff08;代…

Go语言在机器学习中有未来吗?

Go 是一种开源编程语言&#xff0c;最初由 Google 设计&#xff0c;用于优化系统级服务的构建和使用、在大型代码库上轻松工作&#xff0c;以及利用多核联网机器。 Go 于 2009 年推出&#xff0c;作为一种静态类型和编译型编程语言&#xff0c;深受 C 语言的影响&#xff0c;注…

苍穹外卖技术栈

重难点详解 1、定义全局异常 2、ThreadLocal ThreadLocal 并不是一个Thread&#xff0c;而是Thread的一个局部变量ThreadLocal 为每一个线程提供独立的存储空间&#xff0c;具有线程隔离的效果&#xff0c;只有在线程内才能取到值&#xff0c;线程外则不能访问 public void …

前端自动化部署,Devops,CI/CD

DevOps 提到 Jenkins&#xff0c;想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合&#xff0c;是一种方法论&#xff0c;并不特指某种技术或者工具。DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。…

【0904作业】QT 完成登陆界面跳转到聊天室+完成学生管理系统的查找和删除功能

一、完成登陆界面跳转到聊天室 1> 项目结构 2> 源码 ① .pro ②main #include "mywnd.h" #include"chatCli.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MyWnd w;w.show();Form f;QObject::co…