生产级Redis Cluster部署(4.0.10版本)

news2024/11/25 20:47:58

生产级Redis Cluster部署

  • 环境准备

主机名

IP地址

端口

描述

redis-master

192.168.1.51

7000

redis-master01

7001

redis-master02

7002

redis-master03

redis-slave

192.168.1.52

8000

redis-slave01

8001

redis-slave02

8002

redis-slave03

  • 初始化环境

两台主机配置主机名,关闭防火墙和selinux

hostname redis-master #修改主机名字

Bash #刷新

iptables -F #关闭防火墙规则

setenforce 0

systemctl stop firewalld

  • Redis环境部署

redis编译部署及基础优化(master

yum -y install wget gcc gcc-c++ make tar openssl openssl-devel cmake

tar xf redis-4.0.10.tar.gz -C /usr/src/   #需有个redis-4.0.10.tar.gz的安装包

cd /usr/src/redis-4.0.10/

make

make MALLOC=jemalloc           #避免碎片和可伸缩的并发支持

make PREFIX=/usr/local/redis install

mkdir -p /usr/local/redis/conf

优化redis程序命令(master

cp sentinel.conf /usr/local/redis/conf/     #redis哨兵配置文件

cp src/redis-trib.rb /usr/local/redis/bin/    #redis-cluster的集群创建工具

ln -s /usr/local/redis/bin/* /usr/local/bin/

redis配置文件精简(master

cp redis.conf /usr/local/redis/conf/

cd /usr/local/redis/

cp conf/redis.conf{,.bak}

egrep -v "^$|^#" conf/redis.conf.bak > conf/redis.conf

系统调优配置(master

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag

echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local

echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local

echo "* - nofile 10240" >> /etc/security/limits.conf        --文件并发数

echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf    --监听队列

echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf    -- 0内存不够,就会拒绝申请

1物理内存都允许分配给你,只要有内存就给你用,这样可以避免申请内存失败的问题。

sysctl -p

  • Redis多实列配置

mkdir -p /data/redis-cluster (#master

cd /data/redis-cluster

mkdir 7000 7001 7002

cp /usr/local/redis/conf/redis.conf /data/redis-cluster/7000/

cp /usr/local/redis/conf/redis.conf /data/redis-cluster/7001/

cp /usr/local/redis/conf/redis.conf /data/redis-cluster/7002/

在redis-slave从库上操作(slave

mkdir -p /data/redis-cluster

cd /data/redis-cluster

mkdir 8000 8001 8002

将redis-master的配置文件复制到redis-slave主机上master (最好作完下列配置后再远程复制)

scp /data/redis-cluster/7000/redis.conf 192.168.1.52:/data/redis-cluster/8000/

scp /data/redis-cluster/7000/redis.conf 192.168.1.52:/data/redis-cluster/8001/

scp /data/redis-cluster/7000/redis.conf 192.168.1.52:/data/redis-cluster/8002/

修改redis-master和redis-slave的redis.conf配置文件

配置参考模板,修改配置文件的对应端口

vim 7000/redis.conf    #红色字体一般都是要修改的 其它基本不要修改

cluster-enabled yes  #启动集群这条要自己手动输入进去

bind 0.0.0.0

port 7000

pidfile /data/redis-cluster/7000/redis.pid

logfile "/data/redis-cluster/7000/redis.log"

dir /data/redis-cluster/7000/

tcp-backlog 1024

timeout 0

tcp-keepalive 0

daemonize yes

loglevel notice

databases 16

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename "dump.rdb"

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

lazyfree-lazy-eviction no

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

slave-lazy-flush no

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite yes

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

启动redis-master多实例(master

redis-server /data/redis-cluster/7001/redis.conf

redis-server /data/redis-cluster/7002/redis.conf

redis-server /data/redis-cluster/7000/redis.conf

netstat -antup | grep redis   #查看端口筛选出redis服务的端口

tcp        0      0 0.0.0.0:7000            0.0.0.0:*               LISTEN      5412/redis-server 0

tcp        0      0 0.0.0.0:7001            0.0.0.0:*               LISTEN      5400/redis-server 0

tcp        0      0 0.0.0.0:7002            0.0.0.0:*               LISTEN      5405/redis-server 0

tcp        0      0 0.0.0.0:17000           0.0.0.0:*               LISTEN      5412/redis-server 0

tcp        0      0 0.0.0.0:17001           0.0.0.0:*               LISTEN      5400/redis-server 0

tcp        0      0 0.0.0.0:17002           0.0.0.0:*               LISTEN      5405/redis-server 0

  • 构建Redis cluster 集群

编译安装高ruby版本,Ruby版本需要大于等于2.2.2(yum安装的不符合)(master

tar xf ruby-2.5.1.tar.gz -C /usr/src/

cd /usr/src/ruby-2.5.1/

./configure && make && make install

ruby --version

在线安装ruby的redis扩展(master

/usr/local/bin/gem install redis  (#这里需要等上一会)

Fetching: redis-4.1.4.gem (100%)

Successfully installed redis-4.1.4

Parsing documentation for redis-4.1.4

Installing ri documentation for redis-4.1.4

Done installing documentation for redis after 1 seconds

1 gem installed

在redis-master上操作(master

redis-trib.rb create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002

>>> Creating cluster

>>> Performing hash slots allocation on 3 nodes...

Using 3 masters:

127.0.0.1:7000

127.0.0.1:7001

127.0.0.1:7002

M: 4e729d539ceb6b5b6bce86f4d6f3dbb6de1cb5ca 127.0.0.1:7000

slots:0-5460 (5461 slots) master

M: 6e3809c102d7cb3013ef8a89bc17f4d6ca1fc93a 127.0.0.1:7001

slots:5461-10922 (5462 slots) master

M: 61b60ec318606a1c86770cee4da74e5b6962076b 127.0.0.1:7002

slots:10923-16383 (5461 slots) master

Can I set the above configuration? (type 'yes' to accept): yes #输入yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join..

>>> Performing Cluster Check (using node 127.0.0.1:7000)

M: 4e729d539ceb6b5b6bce86f4d6f3dbb6de1cb5ca 127.0.0.1:7000

slots:0-5460 (5461 slots) master

0 additional replica(s)

M: 61b60ec318606a1c86770cee4da74e5b6962076b 127.0.0.1:7002

slots:10923-16383 (5461 slots) master

0 additional replica(s)

M: 6e3809c102d7cb3013ef8a89bc17f4d6ca1fc93a 127.0.0.1:7001

slots:5461-10922 (5462 slots) master

0 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

查看cluster集群的构建节点信息(master

redis-cli -p 7000 cluster nodes

61b60ec318606a1c86770cee4da74e5b6962076b 127.0.0.1:7002@17002 master - 0 1589298445481 3 connected 10923-16383

4e729d539ceb6b5b6bce86f4d6f3dbb6de1cb5ca 127.0.0.1:7000@17000 myself,master - 0 1589298444000 1 connected 0-5460

6e3809c102d7cb3013ef8a89bc17f4d6ca1fc93a 127.0.0.1:7001@17001 master - 0 1589298446490 2 connected 5461-10922

ls /data/redis-cluster/7000/

nodes.conf  redis.conf  redis.log  redis.pid

cat /data/redis-cluster/7000/nodes.conf

61b60ec318606a1c86770cee4da74e5b6962076b 127.0.0.1:7002@17002 master - 0 1589298205185 3 connected 10923-16383

4e729d539ceb6b5b6bce86f4d6f3dbb6de1cb5ca 127.0.0.1:7000@17000 myself,master - 0 0 1 connected 0-5460

6e3809c102d7cb3013ef8a89bc17f4d6ca1fc93a 127.0.0.1:7001@17001 master - 0 1589298205085 2 connected 5461-10922

vars currentEpoch 3 lastVoteEpoch 0

使用redis-cli去操作集群,需要加入-c参数

在redis-master上操作(master

redis-cli -c -p 7000

127.0.0.1:7000> set name crushlinux

-> Redirected to slot [5798] located at 127.0.0.1:7001 #被分配到了7001端口

OK

127.0.0.1:7001> set age 18

-> Redirected to slot [741] located at 127.0.0.1:7000

OK

127.0.0.1:7000> exit

去中心化,随意一个入口

redis-cli -c -p 7000 get name

"crushlinux"

redis-cli -c -p 7001 get name

"crushlinux"

redis-cli -c -p 7002 get name

"crushlinux"

在redis-slave上操作(slave

 

redis-cli -h 192.168.1.51 -c -p 7000 get name

Could not connect to Redis at 127.0.0.1:7001: Connection refused #被拒绝了

Could not connect to Redis at 127.0.0.1:7001: Connection refused

redis-cli -h 192.168.1.51 -c -p 7001 get name

"crushlinux" #只有7001成功了

redis-cli -h 192.168.1.51 -c -p 7002 get name

Could not connect to Redis at 127.0.0.1:7001: Connection refused #被拒绝了

Could not connect to Redis at 127.0.0.1:7001: Connection refused

以远程的方式访问redis-cluster时,被拒绝是因为我们创建集群的时候,是以127.0.0.1的本地IP方式创建的,因此只有本地访问时cluster集群才能发挥作用。

远程访问7001端口时,之所以能成功,是因为数据本来就是存在了监听7001端口的redis上,所以我们不加-c也能访问成功。

redis-cli -h 192.168.1.51 -p 7001 get name

"crushlinux"

  • Cluster生产集群部署

在redis-master上操作(master

ls /data/redis-cluster/7000

nodes.conf  redis.conf  redis.log  redis.pid

ls /data/redis-cluster/7001

nodes.conf  redis.conf  redis.log  redis.pid

ls /data/redis-cluster/7002

nodes.conf  redis.conf  redis.log  redis.pid

删除cluster集群配置文件(master

redis-cli -p 7000 shutdown

redis-cli -p 7001 shutdown

redis-cli -p 7002 shutdown  #先暂停再删除

rm -rf /data/redis-cluster/7000/nodes.conf

rm -rf /data/redis-cluster/7001/nodes.conf

rm -rf /data/redis-cluster/7002/nodes.conf

启动redis-server(master

redis-server /data/redis-cluster/7000/redis.conf

redis-server /data/redis-cluster/7001/redis.conf

redis-server /data/redis-cluster/7002/redis.conf

重新创建redis-cluster集群(master

redis-trib.rb create 192.168.1.51:7000 192.168.1.51:7001 192.168.1.51:7002

>>> Creating cluster

>>> Performing hash slots allocation on 3 nodes...

Using 3 masters:

192.168.1.51:7000

192.168.1.51:7001

192.168.1.51:7002

M: a4f23ae3a3fbbfab8c9fcd22f499d96badff9434 192.168.1.51:7000

slots:0-5460 (5461 slots) master

M: d41141bbb9559a0d1a7df036ed0bca190603d786 192.168.1.51:7001

slots:5461-10922 (5462 slots) master

M: e6421050008242d4e98090c0d45df98edcd66d5b 192.168.1.51:7002

slots:10923-16383 (5461 slots) master

Can I set the above configuration? (type 'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join

>>> Performing Cluster Check (using node 192.168.1.51:7000)

M: a4f23ae3a3fbbfab8c9fcd22f499d96badff9434 192.168.1.51:7000

slots:0-5460 (5461 slots) master

0 additional replica(s)

M: d41141bbb9559a0d1a7df036ed0bca190603d786 127.0.0.1:7001

slots:5461-10922 (5462 slots) master

0 additional replica(s)

M: e6421050008242d4e98090c0d45df98edcd66d5b 127.0.0.1:7002

slots:10923-16383 (5461 slots) master

0 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

ps -ef | grep cluster | grep -v grep

root      20005      1  0 23:54 ?        00:00:00 redis-server 0.0.0.0:7000 [cluster]

root      20010      1  0 23:54 ?        00:00:00 redis-server 0.0.0.0:7001 [cluster]

root      20015      1  0 23:54 ?        00:00:00 redis-server 0.0.0.0:7002 [cluster]

在redis-slave上进行远程连接cluster集群测试(slave

redis-cli -h 192.168.1.51 -c -p 7000 set name crushlinux

OK

redis-cli -h 192.168.1.51 -c -p 7001 get name

"crushlinux"

redis-cli -h 192.168.1.51 -c -p 7002 get name

"crushlinux"

redis-cli -h 192.168.1.51 -c -p 7001

192.168.1.51:7001> get name

"crushlinux"

192.168.1.51:7001> set age 18

-> Redirected to slot [741] located at 192.168.1.51:7000

OK

192.168.1.51:7000> get age

"18"

192.168.1.51:7000> exit

批量导入数据观察key的集群分布情况(slave)(导入量过大需等一会)

for line in `seq -w 10000`;do redis-cli -h 192.168.1.51 -p 7000 -c set key3_${line} value_${line};done

分析cluster集群key的节点分布情况

redis-cli -h 192.168.1.51 -p 7000 info Keyspace

# Keyspace

db0:keys=3338,expires=0,avg_ttl=0

redis-cli -h 192.168.1.51 -p 7001 info Keyspace

# Keyspace

db0:keys=3354,expires=0,avg_ttl=0

redis-cli -h 192.168.1.51 -p 7002 info Keyspace

# Keyspace

db0:keys=3310,expires=0,avg_ttl=0

三个节点个数大概平均(10000

  • Cluster集群故障切换

启动redis-slave上所有的从库(slave

redis-server /data/redis-cluster/8000/redis.conf

redis-server /data/redis-cluster/8001/redis.conf

redis-server /data/redis-cluster/8002/redis.conf

netstat -lnpt | grep redis

tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      30034/redis-server

tcp        0      0 0.0.0.0:8001            0.0.0.0:*               LISTEN      30039/redis-server

tcp        0      0 0.0.0.0:8002            0.0.0.0:*               LISTEN      30044/redis-server

tcp        0      0 0.0.0.0:18000           0.0.0.0:*               LISTEN      30034/redis-server

tcp        0      0 0.0.0.0:18001           0.0.0.0:*               LISTEN      30039/redis-server

tcp        0      0 0.0.0.0:18002           0.0.0.0:*               LISTEN      30044/redis-server

redis-cluster集群从库的添加,在redis-master上操作

添加第一组从服务器(master

redis-trib.rb add-node --slave 192.168.1.52:8000   192.168.1.51:7000

添加第二组从服务器(master

redis-trib.rb add-node --slave 192.168.1.52:8001  192.168.1.51:7001

添加第三组从服务器(master

redis-trib.rb add-node --slave 192.168.1.52:8002  192.168.1.51:7002

查看集群所有节点的信息(master

redis-cli -p 7000 cluster nodes

slave从库的读写测试(slave

redis-cli -h 192.168.1.52 -c -p 8000

192.168.1.52:8000> set address beijing

-> Redirected to slot [3680] located at 192.168.1.51:7000

OK

192.168.1.51:7000> exit

redis-cli -h 192.168.1.52 -c -p 8000 get address

"beijing"

redis-cli -h 192.168.1.52 -c -p 8001 get address

"beijing"

redis-cli -h 192.168.1.52 -c -p 8002 get address

"beijing"

redis-cli -h 192.168.1.51 -c -p 7000 get address

"beijing"

redis-cli -h 192.168.1.51 -c -p 7001 get address

"beijing"

redis-cli -h 192.168.1.51 -c -p 7002 get address

"beijing"

通过测试,我们发现redis的cluster集群不论是主库还是从库都可以进行set和get。因此,在使用中我们就没必要都去主库了。

查看主从cluster集群key的分布情况(slave

redis-cli -h 192.168.1.52 -c -p 8000 info Keyspace

# Keyspace

db0:keys=3339,expires=0,avg_ttl=0

redis-cli -h 192.168.1.52 -c -p 8001 info Keyspace

# Keyspace

db0:keys=3354,expires=0,avg_ttl=0

redis-cli -h 192.168.1.52 -c -p 8002 info Keyspace

# Keyspace

db0:keys=3310,expires=0,avg_ttl=0

redis-cli -h 192.168.1.51 -c -p 7000 info Keyspace

# Keyspace

db0:keys=3339,expires=0,avg_ttl=0

redis-cli -h 192.168.1.51 -c -p 7001 info Keyspace

# Keyspace

db0:keys=3354,expires=0,avg_ttl=0

redis-cli -h 192.168.1.51 -c -p 7002 info Keyspace

# Keyspace

db0:keys=3310,expires=0,avg_ttl=0

redis集群的主从自动切换,主库挂掉后,从自动变为主

手动切换主从命令cluster failover(slave

[root@redis-slave ~]# redis-cli -h 192.168.1.51 -p 7000 shutdown

[root@redis-slave ~]# redis-cli -h 192.168.1.52 -p 8000 cluster nodes

手动down掉了7000端口的redis-server。从信息得知,7000挂了,8000被切换成了master

重新启动7000端口的server,再次查看(master

[root@redis-master ~]# redis-server /data/redis-cluster/7000/redis.conf

[root@redis-slave ~]# redis-cli -h 192.168.1.52 -p 8000 cluster nodes

从信息得知:7000的redis启动以后,变成了slave。

手动将redis-server 7000端口重新切换成主库

[root@redis-slave ~]# redis-cli -h 192.168.1.51 -c -p 7000 cluster failover

OK

[root@redis-slave ~]# redis-cli -h 192.168.1.52 -p 8000 cluster nodes

删除节点

[root@redis-master ~]# redis-cli -h 192.168.1.52 8000 cluster node 

[root@redis-master ~]# redis-trib.rb del-node 192.168.1.52:8001

[root@redis-master ~]# redis-cli -h 192.168.1.52 -p 8000 cluster nodes

最后跟着的是这个节点的ID,可在redis-cli终端中使用cluster nodes查看。

修复节点

[root@redis-master ~]# redis-trib.rb add-node --slave 192.168.1.52:8001

清空8001节点现有数据

[root@redis-slave ~]#kill -9 67708

[root@redis-slave ~]# rm -rf /data/redis-cluster/8001/dump.rdb

[root@redis-slave ~]# rm -rf /data/redis-cluster/8001/nodes.conf

[root@redis-slave ~]# rm -rf /data/redis-cluster/8001/redis.pid

[root@redis-slave ~]# redis-server /data/redis-cluster/8001/redis.conf

[root@redis-master ~]#redis-trib.rb add-node --slave 192.168.1.52:8001 192.168.1.51:7001

[root@redis-master ~]# redis-cli -h 192.168.1.52 -p 8000 cluster nodes

不足之处,还请各位大佬担待

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

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

相关文章

代码随想录二刷day42 | 动态规划之背包问题 416. 分割等和子集

day42 416. 分割等和子集确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 416. 分割等和子集 题目链接 解题思路: 这是一维的背包问题 只有确定了如下四点,才能把01背包问题套到本题上来。 背包的体积为sum / 2背包要…

Java 实现快慢指针法返回链表的中间结点

一、思路 这里分为链表结点个数是 奇数 和 偶数 两种情况。 如果是奇数,中间结点只有一个,返回即可;如果是偶数,中间结点则有两个,这里要求返回第二个。 上述图片展示的就是奇数的情况,此时中间结点就是…

找不到“$libdir/postgis-X.X“问题解决方案

背景: 数据库从postgresql-11.9 升级到11.20版本,11.20版本采用了docker镜像 postgis/postgis:11-3.3 (截止20230703实际对应的版本为pg11.20postgis3.3) 升级版本,使用了原来的data,主要版本不变,次要版本升级&#…

文档管理系统是业迈向数字化办公的新时代

随着信息技术的不断发展,企业数字化办公已成为越来越多企业的选择。在数字化办公中,文档管理系统是一个非常重要的组成部分,可以帮助企业打破时空限制,提高工作效率和质量,推动企业向数字化办公的新时代迈进。 什么是…

力扣 39. 组合总和

题目来源:https://leetcode.cn/problems/combination-sum/description/ C题解: 递归法。递归前对数组进行有序排序,可方便后续剪枝操作。 递归函数参数:定义两个全局变量,二维数组result存放结果集,数组pa…

当使用POI打开Excel文件遇到out of memory时该如何处理?

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 当我们开发处理Excel文件时,Apache POI 是许多人首选的工具。但是&#xff…

ssh Permission denied, please try again

Permission denied, please try again 修改 vi /etc/sshd_config 最后重启配置或者重启板子,重新ssh连接

优化springboot

介绍 在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢? 1. 方便微服务部署。 2. 方便项目启动,不需要下载Tomcat或者Jetty 针对目前的容器优化,目前来…

Dual In-Line Package(双列直插式封装)

DIP封装示意图 DIP的详细介绍: 1.封装形式:DIP是一种插件式封装,它由一个狭长的塑料或陶瓷封装体组成,具有在两侧排列的引脚。引脚通常是分布均匀的,并以一定的间隔排列,以便与插座或印刷电路板上的插孔对…

vue 连载软件大陆 vue之新手村,vue创建运行指导(如:vue脚手架,创建启动项目,配置等)

第一章 ’vue功法启动‘ 宇宙之间,开天辟地,从无到有,有一颗蔚蓝色的星球,名为软件大陆,如今大陆上有着众多老牌家族势力的诞生,如:c家族、c家族、java家族、.net家族、等, 而我们今天要说的是…

Vue + electron 构建桌面应用程序

文章目录 需求分析解决 需求 使用Vue.js构建桌面应用程序 分析 选择一个Vue.js框架:选择一个适合你的Vue.js框架。推荐使用Electron,因为它是最流行的桌面应用程序框架之一,而且与Vue.js非常兼容。还有其他框架,如 Proton Native…

【C语言趣味教程】第一章:你好, 世界! 「热门 C 语言专栏《维生素C语言》2023 全新重制」

🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅&#x…

SQL注入第三章节数据类型与提交方式

SQL注入第三章节数据类型与提交方式 3.1 SQL注入之数据类型 (1)数字型注入点 许多网页链接有类似的结构 http://xxx.com/users.php?id1。基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字&#xff0c…

02、Nginx目录结构与基本运行原理

一、目录: Nginx一般安装在/usr/local/nginx目录下(安装时–prefix可指定安装目录) conf #配置文件|-nginx.conf #主配置文件|-其他配置文件 #可通过那个include关键字,引入到了nginx.…

Redis(主从复制、哨兵模式、集群)概述及部署

Redis(主从复制、哨兵模式、集群)概述及部署 一、Redis主从复制1、Redis主从复制的概念2、Redis主从复制的作用3、Redis主从复制的流程4、Redis主从复制的搭建 二、Redis 哨兵模式1、哨兵模式的原理2、哨兵模式的作用3、哨兵模式的结构4、哨兵模式的搭建…

【Redisson】Redisson--分布式远程服务(Remote Service)

Redisson系列文章: 【Redisson】Redisson–基础入门【Redisson】Redisson–布隆(Bloom Filter)过滤器【Redisson】Redisson–分布式锁的使用(推荐使用)【分布式锁】Redisson分布式锁底层原理【Redisson】Redisson–限流器 文章目录 一、Redi…

java--类变量与实例变量--实验设计--村庄种树

目录 设计要求 设计流程图 程序代码 类Village代码 类MainClass代码 可以直接运行的代码 运行结果 类变量与实例变量的区别和类方法与实例方法的区别 idea的详细使用方法 设计要求 编写程序模拟两个村庄共同拥有一片森林;编写一个Village类,该类…

WebDAV之派盘本地个人云+RaiDrive

RaiDrive是一款Windows平台下的网络驱动器软件,可以将云存储、FTP、WebDAV等网络存储设备映射为本地磁盘,方便用户在本地访问、管理和备份云端数据。它支持的存储设备包括Google Drive、Microsoft OneDrive、DropBox、以及FTP、SFTP等等。使用RaiDrive,用户可以在本地用文件…

Java中规模软件开发实训——掌握财务自由的关键!解锁智能家庭记账系统的神奇力量!(家庭记账软件)

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(html css js) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:财务自由&am…

【LeetCode】HOT 100(20)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…