NoSql数据库集群——Redis

NoSQL 数据库,全称为 Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase),每种 NoSQL 都有其特有的使用场景及优点。

一、源码安装

redis1安装redis

#解压源码包

[root@redis1 ~]# tar zxf redis-7.4.0.tar.gz

[root@redis1 ~]# ls

anaconda-ks.cfg  redis-7.4.0  redis-7.4.0.tar.gz

#安装编译工具

[root@redis1 ~]# cd redis-7.4.0/

[root@redis1 redis-7.4.0]# dnf install make gcc -y

[root@redis1 redis-7.4.0]# wget https://mirrors.aliyun.com/rockylinux/9.4/devel/x86_64/os/Packages/i/initscripts-10.11.6-1.el9.x86_64.rpm /mnt

[root@redis1 redis-7.4.0]# yum localinstall initscripts-10.11.6-1.el9.x86_64.rpm -y

#执行编译命令

[root@redis1 redis-7.4.0]# make

[root@redis1 redis-7.4.0]# make install

#启动redis

[root@redis1 redis-7.4.0]# cd utils/

[root@redis1 utils]# ./install_server.sh

#解决报错问题

[root@redis1 utils]# vim install_server.sh

[root@redis1 utils]# ./install_server.sh

#配置redis

[root@redis1 utils]# vim /etc/redis/6379.conf

[root@redis1 utils]# /etc/init.d/redis_6379 restart

#查看信息

[root@redis1 utils]# redis-cli

127.0.0.1:6379>

redis2、redis3安装redis

#将文件同步到redis2、redis3

[root@redis1 ~]# scp -r redis-7.4.0 root@172.25.254.20:/root

[root@redis1 ~]# rsync -al /usr/local/bin/* root@172.25.254.20:/usr/local/bin

#下载相关依赖

[root@redis2 redis-7.4.0]# yum install initscripts -y

[root@redis2 utils]# ./install_server.sh

#启动redis服务

[root@redis2 utils]# redis-cli

二、redis基本操作示例

#查看配置

127.0.0.1:6379> config get *

#选择数据库

127.0.0.1:6379> select 1

127.0.0.1:6379[1]> get name

(nil)

#清空当前数据库

127.0.0.1:6379[1]> flashdb

#清空所有数据库

127.0.0.1:6379[1]> flashall

#移动key

127.0.0.1:6379> move name 1

#删除

127.0.0.1:6379[1]> del name

#改名

127.0.0.1:6379[1]> rename name id

#设置过期时间

127.0.0.1:6379> set name du ex 10000

#设置持久化

127.0.0.1:6379> persist name

#查询

127.0.0.1:6379> keys *

#判断是否存在

127.0.0.1:6379> exists name

三、redis主从复制

1.修改各节点的配置文件

以redis1为例

[root@redis1 ~]# vim /etc/redis/6379.conf

[root@redis1 ~]# /etc/init.d/redis_6379 restart

2.配置slave节点

以redis2为例

[root@redis2 ~]# vim /etc/redis/6379.conf

[root@redis2 ~]# /etc/init.d/redis_6379 restart

3.测试效果

#在mastser节点

[root@redis1 ~]# redis-cli

127.0.0.1:6379> set name du

OK

#在slave节点查看

[root@redis2 ~]# redis-cli

127.0.0.1:6379> get name

"du"

三、Redis的哨兵(高可用)

1.master节点配置

[root@redis1 ~]# cd redis-7.4.0/

[root@redis1 redis-7.4.0]# cp sentinel.conf /etc/redis/

[root@redis1 redis-7.4.0]# vim /etc/redis/sentinel.conf

#复制配置文件到其他节点

[root@redis1 redis-7.4.0]# scp /etc/redis/sentinel.conf root@172.25.254.20:/etc/redis/

[root@redis1 redis-7.4.0]# scp /etc/redis/sentinel.conf root@172.25.254.30:/etc/redis/

2 启动服务

[root@redis1 redis-7.4.0]# redis-sentinel /etc/redis/sentinel.conf

当master未出故障时

当master出现故障,master节点从redis1变成redis3

[root@redis1 ~]# redis-cli

127.0.0.1:6379> shutdown

not connected>

四、Redis Cluster(无中心化设计)

#删除redis1、redis2、redis3中的redis

[root@redis2 redis-7.4.0]# dnf install make

[root@redis2 redis-7.4.0]# dnf install gcc -y

[root@redis2 redis-7.4.0]# make uninstall

另外添加三台主机redis10、redis20、redis30

[root@redis1 ~]# yum install redis -y

[root@redis1 ~]# vim /etc/redis/redis.conf

[root@redis1 ~]# systemctl enable --now redis

[root@redis1 ~]# redis-cli

127.0.0.1:6379> auth 123456

OK

127.0.0.1:6379> keys *

(empty array)

127.0.0.1:6379>

[root@redis1 ~]# for i in 20 30 110 120 130

> do

> scp /etc/redis/redis.conf root@172.25.254.$i:/etc/redis/redis.conf

> done

以redis1为例

[root@redis1 ~]# systemctl enable --now redis

1、创建redis-cluster

[root@redis1 ~]# redis-cli --cluster create -a 123456  172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379  --cluster-replicas 1

#检测redis集群状态

[root@redis1 ~]# redis-cli -a 123456 --cluster info 172.25.254.10:6379

[root@redis1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

#写入数据

127.0.0.1:6379> set key1 value1

(error) MOVED 9189 172.25.254.20:6379

被分配到20的hash槽位上

[root@redis2 ~]# redis-cli -a 123456

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

127.0.0.1:6379> set key1 value1

OK

2、集群扩容

另外添加两台主机redis50、redis150

[root@redis50 ~]# dnf install redis -y

[root@redis150 ~]# dnf install redis -y

[root@redis2 ~]# scp /etc/redis/redis.conf root@172.25.254.50:/etc/redis/redis.conf

[root@redis2 ~]# scp /etc/redis/redis.conf root@172.25.254.150:/etc/redis/redis.conf

[root@redis50 ~]# systemctl start redis

[root@redis150 ~]# systemctl start redis

#将redis50加入到redis20所在的集群中

[root@redis2 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.50:6379 172.25.254.20:6379

#分配槽位

[root@redis2 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.20:6379

#添加slave

[root@redis2 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.20:6379 --cluster-slave --cluster-master-id 912c2013bae0f8d2be6de7a79c95eefd8317a527

3、cluster集群维护

添加节点的时候是先添加node节点到集群,然后分配槽位,删除节点的操作与添加节点的操作正好相 反,是先将被删除的Redis node上的槽位迁移到集群中的其他Redis node节点上,然后再将其删除,如 果一个Redis node节点上的槽位没有被完全迁移,删除该node的时候会提示有数据且无法删除。

#移除要下线主机的哈希槽位

[root@redis2 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.20:6379

#删除master

[root@redis2 ~]# redis-cli -a 123456 --cluster del-node 172.25.254.50:6379 912c2013bae0f8d2be6de7a79c95eefd8317a527

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值