redis主从从,redis-7.0.13

redis主从从,redis-7.0.13

    • 下载redis
    • 安装redis
      • 安装redis-7.0.13过程
        • 报错1、没有gcc,
        • 报错2、没有python3,
        • 报错3、[adlist.o] 错误 127
      • 解决安装报错
      • 安装完成
    • 部署redis 主从从结构
      • redis主服务器
        • 配置redis
        • 启动redis
        • 登录redis
        • redis默认是主
      • redis从服务器1
      • redis从服务器2
    • 部署3哨兵 redis-sentinel
        • 未成功故障切换
    • 哨兵配置文件 默认文件
    • redis.conf 默认文件

下载redis

下载 |雷迪斯 (redis.io)

在这里插入图片描述

链接:https://download.redis.io/releases/redis-7.0.13.tar.gz?_gl=11itkjl8_gaNjQ4ODk5MzUxLjE2OTU0NTQ0NTU._ga_8BKGRQKRPV*MTY5NTQ1NDQ1NS4xLjEuMTY5NTQ1NTI3OC4xMC4wLjA.

安装redis

从源安装 Redis |雷迪斯

在这里插入图片描述

python链接:
https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tgz

curl -o Python-3.11.5.tgz https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tgz

在这里插入图片描述

安装redis-7.0.13过程

报错1、没有gcc,
报错2、没有python3,
报错3、[adlist.o] 错误 127
tar xf redis-7.0.13.tar.gz
cd redis-7.0.13
make 
# 报错 没有命令 cc,没有python3,[adlist.o] 错误 127
cd src && make all
sh: cc: 未找到命令
which: no python3 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
make[1]: 进入目录“/data/redis1/redis-stable/src”CC Makefile.dep
make[1]: 离开目录“/data/redis1/redis-stable/src”
sh: cc: 未找到命令
which: no python3 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
make[1]: 进入目录“/data/redis1/redis-stable/src”
....
MAKE hiredis
cd hiredis && make static
make[3]: 进入目录“/data/redis1/redis-stable/deps/hiredis”
cc -std=c99 -c -O3 -fPIC   -Wall -Wextra -Werror -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb  -pedantic alloc.c
make[3]: cc:命令未找到
make[3]: *** [alloc.o] 错误 127
make[3]: 离开目录“/data/redis1/redis-stable/deps/hiredis”
make[2]: *** [hiredis] 错误 2
make[2]: 离开目录“/data/redis1/redis-stable/deps”
make[1]: [persist-settings] 错误 2 (忽略)CC adlist.o
/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 错误 127
make[1]: 离开目录“/data/redis1/redis-stable/src”
make: *** [all] 错误 2

解决安装报错

#安装python3,安装gcc
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make
cd /data/
curl -o Python-3.11.5.tgz https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tgz
tar xf Python-3.11.5.tgz
cd Python-3.11.5.tgz
mkdir -p /usr/local/tools/
./configure --prefix=/usr/local/tools/
make && make install
ll /usr/local/tools/
总用量 0
drwxr-xr-x 2 root root 202 923 18:01 bin
drwxr-xr-x 3 root root  24 923 18:01 include
drwxr-xr-x 4 root root  64 923 18:01 lib
drwxr-xr-x 3 root root  17 923 18:01 share#配置python环境变量
vim /etc/profile
export PYTHON_HOME=/usr/local/tools
export PATH=$PYTHON_HOME/bin:$PATHsource /etc/profile
which python3
/usr/local/tools/bin/python3#再次make redis
cd /data/redis-7.0.13
make && make install
#报错
cd src && make all
make[1]: 进入目录“/data/redis/redis-7.0.13/src”CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录#include <jemalloc/jemalloc.h>^
编译中断。
make[1]: *** [adlist.o] 错误 1
make[1]: 离开目录“/data/redis/redis-7.0.13/src”
make: *** [all] 错误 2# 使用make MALLOC=libc
make MALLOC=libc
#编译成功CC cli_common.oLINK redis-cliCC redis-benchmark.oLINK redis-benchmarkINSTALL redis-check-rdbINSTALL redis-check-aofHint: It's a good idea to run 'make test' ;)make[1]: 离开目录“/data/redis/redis-7.0.13/src”

安装完成

ll src/redis-cli
-rwxr-xr-x 1 root root 1083416 923 18:24 src/redis-cli
ll src/redis-server
-rwxr-xr-x 1 root root 7018488 923 18:24 src/redis-server
ll src/redis-sentinel
-rwxr-xr-x 1 root root 7018488 923 18:24 src/redis-sentinel

部署redis 主从从结构

瑞迪斯配置 |雷迪斯 (redis.io)

Redis 配置文件示例 |雷迪斯

瑞迪斯复制 |雷迪斯 (redis.io)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

redis主服务器

配置redis
cd /data/redis/redis-7.0.13
cp redis.conf redis.conf.bakln -s /data/redis/redis-7.0.13/src/redis-server  /usr/local/bin/redis-server
ln -s /data/redis/redis-7.0.13/src/redis-sentinel /usr/local/bin/redis-sentinel
ln -s /data/redis/redis-7.0.13/src/redis-cli /usr/local/bin/redis-climkdir -p /data/redisdata/vim redis.conf
bind 192.168.75.143
port 6379
protected-mode no
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice#Redis服务器的工作目录
dir /data/redisdata/#Redis日志文件的路径,如果设置为空字符串,表示不记录日志文件,只在终端打印
logfile /data/redis.log
#
##Redis服务器支持的数据库数量
databases 16
#
##是否总是显示Redis的logo,如果设置为yes,每次启动Redis时都会打印logo
always-show-logo no#服务器密码
requirepass "123456"#连接主服务器的密码
masterauth 123456
启动redis
src/redis-server redis.conf &
登录redis
[root@redis2 redis-7.0.13]# redis-cli -h 192.168.75.143
192.168.75.143:6379> ping
(error) NOAUTH Authentication required.
192.168.75.143:6379> auth 123456
OK
192.168.75.143:6379> ping
PONG
192.168.75.143:6379>
redis默认是主

192.168.75.143:6379> info
# Server
redis_version:7.0.13
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:6199b82bc88869ee
redis_mode:standalone
os:Linux 3.10.0-862.el7.x86_64 x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:1403
process_supervised:no
run_id:16267262862dc73b8cebb24273cf04274ac40e90
tcp_port:6379
server_time_usec:1695627161454916
uptime_in_seconds:61
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:1128345
executable:/data/redis/redis-7.0.13/src/redis-server
config_file:/data/redis/redis-7.0.13/redis.conf
io_threads_active:0# Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:24
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0# Replication   
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:4e46cf3ce0a63154324bec95ecd029f7ad681a28
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

redis从服务器1

cd /data/redis/redis-7.0.13
cp redis.conf redis.conf.bakvim redis.conf
bind 192.168.75.144
port 6379
protected-mode no
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice#Redis服务器的工作目录
dir /data/redisdata/#Redis日志文件的路径,如果设置为空字符串,表示不记录日志文件,只在终端打印
logfile /data/redis.log
#
##Redis服务器支持的数据库数量
databases 16
#
##是否总是显示Redis的logo,如果设置为yes,每次启动Redis时都会打印logo
always-show-logo no#服务器密码
requirepass "123456"#从服务器设置,复制哪个主服务器
replicaof 192.168.75.143 6379
#连接主服务器的密码
masterauth 123456

redis从服务器2

cd /data/redis/redis-7.0.13
cp redis.conf redis.conf.bakvim redis.conf
bind 192.168.75.145
port 6379
protected-mode no
daemonize no
pidfile /var/run/redis_6379.pid
loglevel notice#Redis服务器的工作目录
dir /data/redisdata/#Redis日志文件的路径,如果设置为空字符串,表示不记录日志文件,只在终端打印
logfile /data/redis.log
#
##Redis服务器支持的数据库数量
databases 16
#
##是否总是显示Redis的logo,如果设置为yes,每次启动Redis时都会打印logo
always-show-logo no#服务器密码
requirepass "123456"#从服务器设置,复制哪个主服务器
replicaof 192.168.75.143 6379
#连接主服务器的密码
masterauth 123456

部署3哨兵 redis-sentinel

未成功故障切换

Redis Sentinel 的高可用性 |雷迪斯
在这里插入图片描述

哨兵配置文件 默认文件

sentinel.conf#是否开启保护模式,'no'表示关闭,默认为关闭
protected-mode no#Redis Sentinel监听的端口号
port 26379#是否以后台进程形式运行,'no'表示在前台运行,默认为'no'"
daemonize no#Redis Sentinel后台运行的进程ID文件路径
pidfile /var/run/redis-sentinel.pid#Redis Sentinel的日志文件路径,此处为空,表示没有指定日志文件,日志打印到控制台。后台运行时如果不配置日志文件,日志将写入/dev/null
logfile ""#Redis Sentinel的工作目录
dir /tmp#定义要监视的主服务器,格式为'master-name ip port quorum'。
# 此处监视名为'mymaster'的主服务器,其在IP地址127.0.0.1的6379端口上运行,并且需要2个Sentinel同意才能进行故障转移,3节点的哨兵集群写2  数字需大于哨兵集群节点总数的一半
sentinel monitor mymaster 127.0.0.1 6379 2#定义主服务器失败所需的时间(毫秒)。如果主服务器在指定的时间内没有响应,Sentinel将认为它已经失败
sentinel down-after-milliseconds mymaster 30000#定义了ACL日志的最大长度,以KB为单位。0表示没有限制
acllog-max-len 128#定义在执行故障转移时,可以同时进行主从同步的数量,示在执行故障转移时,最多只有一个从节点会成为新的主节点。其他从节点会尝试复制新的主节点,但是不会成为主节点。
sentinel parallel-syncs mymaster 1#定义故障转移的超时时间(毫秒)。如果在这个时间内没有完成故障转移,Sentinel将停止并尝试其他方法
sentinel failover-timeout mymaster 180000#是否禁止在运行时通过脚本重新配置Sentinel,'yes'表示禁止
sentinel deny-scripts-reconfig yes#是否允许Sentinel解析主机名,'no'表示不允许
SENTINEL resolve-hostnames no#是否允许Sentinel宣布其主机名,'no'表示不允许
SENTINEL announce-hostnames no#如果主服务器因重启而消失的时间超过这个值(以毫秒为单位),Sentinel将认为主服务器已经失败。此处为0,表示关闭此功能
SENTINEL master-reboot-down-after-period mymaster 0

管理红人 |雷迪斯 (redis.io)

redis配置
在这里插入图片描述

启动redis两种方式

  1. 命令行

    redis-server /path/to/your/redis.conf

  2. systemctl

    cp redis-7.0.13/utils/systemd-redis_server.service /usr/lib/systemd/system/redis.service

    vim /usr/lib/systemd/system/redis.service

    sudo systemctl daemon-reload
    sudo systemctl enable redis
    sudo systemctl start redis

redis.conf 默认文件

#绑定Redis服务器到指定的IP地址,多个IP地址用空格分隔。如 127.0.0.1 -::1 表示绑定到本机的所有IPv4和IPv6的地址
bind 127.0.0.1 -::1#保护模式,如果是yes,没有密码的客户端将不能访问Redis服务器
protected-mode yes#如需要设置Redis的密码
requirepass yourpassword#Redis服务器监听的端口号
port 6379#TCP连接队列的最大长度
tcp-backlog 511#客户端连接闲置多长时间后关闭,0表示关闭此功能
timeout 0#TCP连接的保持活跃时间,单位是秒
tcp-keepalive 300#是否让Redis以守护进程方式运行,如果是yes,Redis将在后台运行
daemonize no#如果Redis以守护进程方式运行,这个选项将指定一个文件名,Redis会把它的进程ID写入这个文件。
pidfile /var/run/redis_6379.pid#Redis日志的级别,可选值包括debug、verbose、notice和warning
loglevel notice#Redis日志文件的路径,如果设置为空字符串,表示不记录日志文件,只在终端打印
logfile ""#Redis服务器支持的数据库数量
databases 16#是否总是显示Redis的logo,如果设置为yes,每次启动Redis时都会打印logo
always-show-logo no#是否设置进程标题,如果设置为yes,Redis会使用一个包含有用信息的标题
set-proc-title yes#设置进程标题的格式
proc-title-template "{title} {listen-addr} {server-mode}"#如果在后台保存数据时发生错误,是否停止写入操作
stop-writes-on-bgsave-error yes#是否启用RDB数据持久化时的压缩功能
rdbcompression yes#是否启用RDB文件的校验和,如果启用,会增加大约10%的性能消耗
rdbchecksum yes#RDB数据持久化文件的名称
dbfilename dump.rdb#是否在每次写入RDB文件后删除旧的RDB文件
rdb-del-sync-files no#Redis服务器的工作目录
dir ./#当主从复制链接断开时,从服务器是否继续提供服务
replica-serve-stale-data yes#从服务器是否为只读模式
#从 Redis 2.6 开始,副本支持默认启用的只读模式
replica-read-only yes#是否启用无盘复制
repl-diskless-sync yes#无盘复制的延迟时间,单位是秒
repl-diskless-sync-delay 5#无盘复制的最大从服务器数量
repl-diskless-sync-max-replicas 0#是否从无盘复制的从服务器加载数据
repl-diskless-load disabled#是否禁用TCP_NODELAY选项
repl-disable-tcp-nodelay no#从服务器的优先级,用于主从复制
replica-priority 100#ACL日志的最大长度
acllog-max-len 128#是否启用延迟释放内存的策略,如果是yes,当内存达到maxmemory限制时,Redis将使用更少的CPU时间来删除键
lazyfree-lazy-eviction no#是否启用延迟释放内存的策略,如果是yes,当键过期时,Redis将使用更少的CPU时间来删除键
lazyfree-lazy-expire no#是否启用延迟释放内存的策略,如果是yes,当服务器删除键时,Redis将使用更少的CPU时间来删除键
lazyfree-lazy-server-del no#是否启用延迟释放内存的策略,如果是yes,当从服务器接收到主服务器的全量复制数据时,Redis将使用更少的CPU时间来删除键
replica-lazy-flush no#是否启用延迟释放内存的策略,如果是yes,当用户调用DEL命令删除键时,Redis将使用更少的CPU时间来删除键
lazyfree-lazy-user-del no#是否启用延迟释放内存的策略,如果是yes,当用户调用FLUSHALL或FLUSHDB命令时,Redis将使用更少的CPU时间来删除键
lazyfree-lazy-user-flush no#当系统内存不足时,是否调整Redis的OOM分数
oom-score-adj no#OOM分数的调整值
oom-score-adj-values 0 200 800#是否禁用透明大页面(THP)
disable-thp yes#是否开启AOF持久化
appendonly no#AOF持久化文件的名称
appendfilename "appendonly.aof"#AOF文件保存的目录
appenddirname "appendonlydir"#AOF文件同步到磁盘的策略
appendfsync everysec#在重写AOF文件期间是否禁用fsync操作
no-appendfsync-on-rewrite no#当前AOF文件大小增长达到上次AOF重写后大小的一定百分比时,将触发AOF重写,即重新生成AOF文件。
#这个百分比就是auto-aof-rewrite-percentage,设置为100表示AOF文件大小增长到上次AOF重写后大小的两倍时,触发AOF重写
auto-aof-rewrite-percentage 100#AOF文件的最小大小,只有AOF文件大小大于此值时,才会触发AOF重写
auto-aof-rewrite-min-size 64mb#如果AOF文件在加载时出现截断错误(比如文件损坏),是否继续加载。设置为yes表示继续加载,设置为no表示停止加载
aof-load-truncated yes#在AOF文件中使用RDB格式的preamble,这有助于在AOF重写时更快地生成新的AOF文件
aof-use-rdb-preamble yes#是否在AOF文件中记录每个写命令的执行时间戳,设置为no表示不记录
aof-timestamp-enabled no#慢查询日志的阈值,单位是微秒。只有当查询执行时间超过此值时,才会被记录到慢查询日志中
slowlog-log-slower-than 10000#慢查询日志的最大长度,即最多保存多少条慢查询日志
slowlog-max-len 128#延迟监控的阈值,单位是微秒。如果服务器在一段时间内持续超过此阈值,则会触发延迟监控
latency-monitor-threshold 0#哪些类型的键空间事件需要发送给客户端,比如'K$'表示所有键空间事件都发送
notify-keyspace-events ""#哈希类型可以存储的最大列表元素数量
hash-max-listpack-entries 512#哈希类型每个列表元素的最大值
hash-max-listpack-value 64#列表类型可以存储的最大列表大小
list-max-listpack-size -2#列表类型压缩的深度
list-compress-depth 0#集合类型可以存储的最大整数集合元素数量
set-max-intset-entries 512#有序集合类型可以存储的最大列表元素数量
zset-max-listpack-entries 128#有序集合类型每个列表元素的最大值
zset-max-listpack-value 64#HyperLogLog数据结构的最大空间占用,单位是字节
hll-sparse-max-bytes 3000#流数据结构每个节点的最大空间占用,单位是字节
stream-node-max-bytes 4096#流数据结构每个节点的最大元素数量
stream-node-max-entries 100#是否在执行命令时进行主动哈希扩展,设置为yes表示进行主动哈希扩展
activerehashing yes#设置客户端输出缓冲区的限制,normal表示普通客户端,0 0 0表示不限制
client-output-buffer-limit normal 0 0 0#设置从服务器客户端输出缓冲区的限制,256mb 64mb 60分别表示硬限制、软限制和持续时间
client-output-buffer-limit replica 256mb 64mb 60#设置发布订阅客户端输出缓冲区的限制,32mb 8mb 60分别表示硬限制、软限制和持续时间
client-output-buffer-limit pubsub 32mb 8mb 60#服务器每秒执行多少次事件循环,即服务器的运行频率
hz 10#是否动态调整服务器的运行频率,设置为yes表示动态调整
dynamic-hz yes#"在AOF重写期间是否对每个写入命令执行fsync操作,设置为yes表示执行
aof-rewrite-incremental-fsync yes#在生成RDB文件期间是否对每个写入命令执行fsync操作,设置为yes表示执行
rdb-save-incremental-fsync yes#是否启用jemalloc的后台线程,设置为yes表示启用
jemalloc-bg-thread yes#主服务器设置密码
#requirepass "123456"
#通过命令行,在主服务将密码写入配置文件
#config set requirepass <password>
#config set requirepass 123456
# config rewrite#从服务器设置,复制哪个主服务器
replicaof 192.168.1.1 6379#从服务器配置密码
masterauth <password>
## 也可通过命令行,在从服务器将密码配置写入配置文件
## config set masterauth <password>
## ## config set masterauth 123456
## config rewrite

瑞迪斯复制 |雷迪斯 (redis.io)

整服务器的运行频率,设置为yes表示动态调整
dynamic-hz yes#"在AOF重写期间是否对每个写入命令执行fsync操作,设置为yes表示执行
aof-rewrite-incremental-fsync yes#在生成RDB文件期间是否对每个写入命令执行fsync操作,设置为yes表示执行
rdb-save-incremental-fsync yes#是否启用jemalloc的后台线程,设置为yes表示启用
jemalloc-bg-thread yes#主服务器设置密码
#requirepass "123456"
#通过命令行,在主服务将密码写入配置文件
#config set requirepass <password>
#config set requirepass 123456
# config rewrite#从服务器设置,复制哪个主服务器
replicaof 192.168.1.1 6379#从服务器配置密码
masterauth <password>
## 也可通过命令行,在从服务器将密码配置写入配置文件
## config set masterauth <password>
## ## config set masterauth 123456
## config rewrite

瑞迪斯复制 |雷迪斯 (redis.io)
在这里插入图片描述

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

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

相关文章

Flutter笔记:用于ORM的Floor框架简记

Flutter笔记 用于ORM的Floor框架简记 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/133377191 floor 模块地址&#xff1a;https://pub.dev/packages/floor 【介绍】&#xff1a;最近想找用于Dart和Flutter的ORM框架&#xff0c;偶然间发现了Floor…

Oracle的递归公共表表达式

查询节点id为2的所有子节点的数据&#xff0c;包括向下级联 WITH T1 (id, parent_id, data) AS (SELECT id, parent_id, dataFROM nodesWHERE id 2UNION ALLSELECT t.id, t.parent_id, t.dataFROM nodes tJOIN T1 n ON t.parent_id n.id ) SELECT * FROM T1; --建表语句 C…

什么是Times New Roman 字体

如何评价 Times New Roman 字体&#xff1f;&#xff1a;https://www.zhihu.com/question/24614549?sortcreated 新罗马字体是Times New Roman字体&#xff0c;是Office Word默认自带的英文字体之一。 中英文字体 写作中&#xff0c;英文和数字的标准字体为 Times New Roma…

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 Docker

华为云云耀云服务器L实例评测 &#xff5c; 实例使用教学之软件安装&#xff1a;华为云云耀云服务器环境下安装 Docker 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云耀云…

十一,从摄像机打印HDR环境贴图

越来越接近真相了。我们很自然地想到&#xff0c;如果把漫游器放在中心打印&#xff0c;是不是就可以打印整个等距柱状投影图了呢&#xff1f;是的&#xff0c;但是&#xff0c;只是要注意的是&#xff0c;立方体贴图的内部和外部尽管一样&#xff0c;但是还是稍微有点模糊&…

spring6-IOC容器

IOC容器 1、IoC容器1.1、控制反转&#xff08;IoC&#xff09;1.2、依赖注入1.3、IoC容器在Spring的实现 2、基于XML管理Bean2.1、搭建子模块spring6-ioc-xml2.2、实验一&#xff1a;获取bean①方式一&#xff1a;根据id获取②方式二&#xff1a;根据类型获取③方式三&#xff…

安卓机型不需要解锁bl 不需要root 即可安装模块 框架 VirtualXposed使用步骤分析

​​​​​​安卓玩机教程---全机型安卓4----安卓12 框架xp edx lsp安装方法【一】 安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤 通过以上两个博文基本可以了解手机正常安装框架的步骤。但很多机型局限于不能解锁bl和root&#xff0c;那么这些机型能不能使…

vue前端项目中添加独立的静态资源

如果想要在vue项目中放一些独立的静态资源&#xff0c;比如html文件或者用于下载的业务模板或其他文件等&#xff0c;需要在vue打包的时候指定一下静态资源的位置和打包后的目标位置。 使用的是 copy-webpack-plugin 插件&#xff0c;如果没有安装则需要先安装一下&#xff0c;…

大数据Flink(九十):Lookup Join(维表 Join)

文章目录 Lookup Join(维表 Join) Lookup Join(维表 Join) Lookup Join 定义(支持 Batch\Streaming):Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维表 Join。…

python抓取网页视频

1. 喜马拉雅音频 1-1 喜马拉雅 import requests import json import time import random import hashliburl https://www.ximalaya.com/revision/play/v1/audio?id46103875&ptype1headers { user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.3…

HUAWEI悦盒ec6108v9c 如何刷成海纳思系统(家用低功耗服务器,使用Home Assistant服务)

环境&#xff1a; 1.HW悦盒ec6108v9c一套 2.16G U盘 3.格式化软件USB_format.exe 4.固件 mv100-mdmo1g-usb-flash.zip&#xff08;底层是Ubuntu 20.04系统&#xff09; 5.十字螺丝刀 6.翘片/薄铲子 7.有线网络环境 8.镊子/回形针 问题描述&#xff1a; 最近玩智能家居…

CH347读写SPI Flash

CH347读写SPI Flash 前面耽搁了几天&#xff0c;今天终于把CH347 SPI接口调试好了。 CH347动态库中SPI接口函数如下&#xff1a; typedef struct _SPI_CONFIG{UCHAR iMode; // 0-3:SPI Mode0/1/2/3UCHAR iClock; // 060…

【数据库】形式化关系查询语言(一):关系代数Relational Algebra

目录 一、关系代数Relational Algebra 1. 基本运算 a. 选择运算&#xff08;Select Operation&#xff09; b. 投影运算&#xff08;Project Operation&#xff09; 组合 c. 并运算&#xff08;Union Operation&#xff09; d. 集合差运算&#xff08;Set Difference Op…

python: 用百度API读取增值税发票信息

# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看&#xff1a; # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2023/9/30 6:56 # User : geovindu # Product : PyCharm # Proj…

机器学习笔记 - 基于强化学习的贪吃蛇玩游戏

一、关于深度强化学习 如果不了解深度强化学习的一般流程的可以考虑看一下下面的链接。因为这里的示例因为在PyTorch 之上实现深度强化学习算法。 机器学习笔记 - Deep Q-Learning算法概览深度Q学习是一种强化学习算法,它使用深度神经网络来逼近Q函数,用于确定在给定状态下采…

架构设计第七讲:数据巡检系统之daily线上表结构自动化比对

架构设计第七讲&#xff1a;数据巡检系统之daily&线上表结构自动化比对 本文是架构设计第七讲&#xff0c;数据巡检系统之daily&线上表结构自动化比对&#xff0c;避免正式环境与测试环境数据库/表、列结构不一致带来问题。 文章目录 架构设计第七讲&#xff1a;数据巡…

193419-86-2,用于蛋白电泳检测的Fluorescein o-acrylate

产品简介&#xff1a;Fluorescein o-acrylate 中FITC具有荧光素衍生物的普遍特性&#xff0c;FITC也经常被用于蛋白电泳检测和荧光能量激发转移测试。 荧光染料及其荧光标记技术一直是生物领域常用的产品和技术&#xff0c;荧光物质是指具有共轭双键体系化学结构的化合物&…

LabVIEW开发实时自动化多物镜云计算全玻片成像装置

LabVIEW开发实时自动化多物镜云计算全玻片成像装置 数字病理学领域正在迅速发展&#xff0c;这主要是由于计算机处理能力、数据传输速度、软件创新和云存储解决方案方面的技术进步。因此&#xff0c;病理科室不仅将数字成像用于图像存档等简单任务&#xff0c;还用于远程病理学…

monkeyrunner录制脚本和回放

Monkeyrunner关于使用录制、生成脚本、编译脚本及执行脚本。 首先在计算机上下载和安装SDK、python 2.将recorder.py文件放置SDK文件夹里tools文件夹下 3.USB连接手机&#xff0c;手机端&#xff0c;开启USB调试&#xff0c;并在计算机DOS中输入adb devices命令&#xff0c;查看…

XXE 漏洞及案例实战

文章目录 XXE 漏洞1. 基础概念1.1 XML基础概念1.2 XML与HTML的主要差异1.3 xml示例 2. 演示案例2.1 pikachu靶场XML2.1.1 文件读取2.1.2 内网探针或者攻击内网应用&#xff08;触发漏洞地址&#xff09;2.1.4 RCE2.1.5 引入外部实体DTD2.1.6 无回显读取文件 3. XXE 绕过3.1 dat…