redis 5.0.x 部署

news2024/12/28 3:57:40

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.coloradmin.cn/o/971738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shotcut for Mac:一款强大而易于使用的视频编辑器

随着数码相机的普及&#xff0c;视频编辑已成为我们日常生活的一部分。对于许多专业和非专业用户来说&#xff0c;找到一个易于使用且功能强大的视频编辑器是至关重要的。今天&#xff0c;我们将向您介绍Shotcut——一款专为Mac用户设计的强大视频编辑器。 什么是Shotcut&…

C#-SQLite-使用教程笔记

微软官网资料链接&#xff08;可下载文档&#xff09; 教程参考链接&#xff1a;SQLite 教程 - SQLite中文手册 项目中对应的system.dat文件可以用SQLiteStudio打开查看 参考文档&#xff1a;https://d7ehk.jb51.net/202008/books/SQLite_jb51.rar 总结介绍 1、下载SQLiteS…

【GPT引领前沿】GPT4技术与AI绘图

推荐阅读&#xff1a; 1、遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用 2、GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术 GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。例如在科研编程…

音视频技术开发周刊 | 309

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 腾讯云音视频及边缘平台专场邀你一起见证“连接”的力量 9月7日&#xff0c;腾讯全球数字生态大会之腾讯云音视频及边缘平台专场即将开启&#xff01;本次专场将重点分享腾…

最小生成树Kruskal、Prim算法C++

什么是最小生成树 连通图&#xff1a; 在无向图中&#xff0c;若从顶点v1到顶点v2有路径&#xff0c;则称顶点v1和顶点v2是连通的。如果图中任意一对顶点都是连通的&#xff0c;则称此图为连通图。 生成树&#xff1a; 一个连通图的最小连通子图称作为图的生成树。有n个顶点的…

OceanBase 里的 schema 是什么?

李博洋 OceanBase 技术部研发工程师。 OceanBase 开源社区里经常会看到一些类似于 “ schema 是什么” 的疑问&#xff1a; 很多同学经常会误以为在 OceanBase 里&#xff0c;schema 只是 database 的同义词&#xff0c;这次分享就从 schema 是什么这个问题稍微展开聊一下。 首…

【51单片机实验笔记】声学篇(一) 蜂鸣器基本控制

目录 前言硬件介绍PWM基础蜂鸣器简介 原理图分析蜂鸣器驱动电路 软件实现蜂鸣器短鸣蜂鸣器功能封装 总结 前言 蜂鸣器在生活中的应用实则相当广泛。通过本章你将学会制造噪声 &#xff08;笑~&#xff09;你将学会驱动它们&#xff0c;并发出响声。 硬件介绍 PWM基础 占空比…

计算机竞赛 基于深度学习的人脸专注度检测计算系统 - opencv python cnn

文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的人脸专注度…

【CPU】常见术语解释

interrupt service routine&#xff0c;ISR&#xff1a;中断服务程序。 中断&#xff1a;指当CPU正在处理某件事情时&#xff0c;外部发生的某一事件&#xff08;如一个电平的变化&#xff0c;一个脉冲沿的发生或 定时器计数溢出等&#xff09;请求CPU迅速去处理&#xff0c;于…

select多选回显问题 (取巧~)

要实现的效果&#xff1a; 实际上select选择框&#xff0c;我想要的是数组对象&#xff0c;但是后端返回来的是个字符串。 以下是解决方法&#xff1a; 以上是一种简单的解决方法~ 也可以自己处理数据。

【聚类】DBCAN聚类

OPTICS是基于DBSCAN改进的一种密度聚类算法&#xff0c;对参数不敏感。当需要用到基于密度的聚类算法时&#xff0c;可以作为DBSCAN的一种替代的优化方案&#xff0c;以实现更优的效果。 原理 基于密度的聚类算法&#xff08;1&#xff09;——DBSCAN详解_dbscan聚类_root-ca…

分类算法系列⑥:随机森林

目录 集成学习方法之随机森林 1、集成学习方法 2、随机森林 3、随机森林原理 为什么采用BootStrap抽样 为什么要有放回地抽样 4、API 5、代码 代码解释 结果 6、随机森林总结 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家…

Llama-7b-hf和vicuna-7b-delta-v0合并成vicuna-7b-v0

最近使用pandagpt需要vicuna-7b-v0&#xff0c;重新过了一遍&#xff0c;前段时间部署了vicuna-7b-v3&#xff0c;还是有不少差别的&#xff0c;transforms和fastchat版本更新导致许多地方不匹配&#xff0c;出现很多错误&#xff0c;记录一下。 更多相关内容可见Fastchat实战…

Python小知识 - 【Python】如何使用Pytorch构建机器学习模型

【Python】如何使用Pytorch构建机器学习模型 机器学习是人工智能的一个分支&#xff0c;它的任务是在已有的数据集上学习&#xff0c;最终得到一个能够解决新问题的模型。Pytorch是一个开源的机器学习框架&#xff0c;它可以让我们用更少的代码构建模型&#xff0c;并且可以让模…

docker 安装rabbitmq

前提&#xff1a;安装好docker docker安装_Steven-Russell的博客-CSDN博客 centos7安装docker_centos7 docker 安装软件_Steven-Russell的博客-CSDN博客 1、启动docker systemctl start docker 2、下载镜像 // 可以先search查询一下可用镜像&#xff0c;此处直接下载最新版本…

LinkedList(3):并发异常

1 LinkedList并发异常 package com.example.demo;import java.util.Iterator; import java.util.LinkedList;public class TestLinkedList {public static void main(String[] args) {LinkedList linkedList new LinkedList(); //双向链表linkedList.add(11);linkedList.add(…

【ES6】require、export和import的用法

在JavaScript中&#xff0c;require、export和import是Node.js的模块系统中的关键字&#xff0c;用于处理模块间的依赖关系。 1、require&#xff1a;这是Node.js中引入模块的方法。当你需要使用其他模块提供的功能时&#xff0c;可以使用require关键字来引入该模块。例如&…

docker从零部署jenkins保姆级教程

jenkins&#xff0c;基本是最常用的持续集成工具。在实际的工作中&#xff0c;后端研发一般没有jenkins的操作权限&#xff0c;只有一些查看权限&#xff0c;但是我们的代码是经过这个工具构建出来部署到服务器的&#xff0c;所以我觉着有必要了解一下这个工具的搭建过程以及简…

分布式环境下的数据同步

一般而言elasticsearch负责搜索&#xff08;查询&#xff09;&#xff0c;而sql数据负责记录&#xff08;增删改&#xff09;&#xff0c;elasticsearch中的数据来自于sql数据库&#xff0c;因此sql数据发生改变时&#xff0c;elasticsearch也必须跟着改变&#xff0c;这个就是…

数据结构与算法-插入希尔归并

一&#xff1a;排序引入 我们通常从哪几个方面来分析一个排序算法&#xff1f; 1.时间效率&#xff1a;决定了算法运行多久&#xff0c;O&#xff08;1&#xff09; 2.空间复杂度&#xff1a; 3.比较次数&交换次数:排序肯定会牵涉到两个操作&#xff0c;一个比较是肯定的。…