企业级NoSql数据库Redis集群

一。关系型数据库和 NoSQL数据库
1.1 数据库主要分为两大类:关系型数据库与NoSQL数据库
关系型数据库:是++建立在关系模型基础上的数据库++ ,其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL、 Oracle、MS SQL Server和 DB2都属于这类传统数据库。
NoSQL数据库:全称为Not OnlySQL,意思就是++适用关系型数据库的时候就使用关系型数据++ 库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase),每种NoSQL都有其特有的使用场景及优点。
1.2 为什么还要用NoSQL 数据库呢?

主要是由于随着互联网发展,数据量越来越大,对性能要求越来越高,传统数据库存在着先天性的缺陷,即单机(单库)性能瓶颈,并且扩展困难。这样既有单机单库瓶颈,却又扩展困难,自然无法满足日益增长的海量数据存储及其性能要求,所以才会出现了各种不同的 NoSQL产品,NoSQL根本性的优势在于在云计算时代,简单、易于大规模分布式扩展,并且读写性能非常高

1.3两者之间的区别:

二。Redis特性和应用场景

1.速度快,10w,QPS,基于内存,C语言实现

2.单线程(纯存储,非阻塞,避免线程切换和静态消耗)

3.持久化

4.支持多种数据结构

5.支持多种编程语言

6.功能丰富,支持Lua脚本,发布订阅,事务,piipeline等功能

7.简单:代码短小精悍,单线程开发容易,不依赖外部库,使用简单

8.主从复制

9.支持高可用和分布式

三。Redis的源码安装

官方下载地址:http://download.redis.io/releases/

1.解压和安装插件

2.make && make install(下载和编译Redis)

3.进入脚本,执行脚本(有错误)

4.进行编译服务有错,vim install_server.sh进行内容注释

5.最后再运行脚本,则启动服务

6.vim /etc/redis/6379.conf :修改网络为所有,关闭密码

7.重新启动redis:启动脚本在/etc/init.d/redis_6379

8.使用Redis:redis-cli

注释:其他用户的拷贝redis

scp -r redis-7.4.0 [email protected]:/root:复制解压的环境

rsync -al * [email protected]:/usr/local/bin:复制环境

四。配置Redis主从同步

主从同步原理

注释:BGSAVE:作用是把 vi /var/lib/redis/6379/dump.rdb (快照)发送给slave,slave先把本身的内容清空(flushall),再将dump.rdb的数据进行从新写入(通过replicationfeedslave函数一条一条地进行写入)

配置操作

1.修改master节点的配置文件:

vi /etc/redis/6379.conf

2.修改salve节点:

vi /etc/redis/6379.conf

/etc/init.d/redis_6379 restart

systemctl stop firewalld

setenforce 0

测试是否成功:info replication看master是否存在一个slave

五。Redis哨兵:

配置过程:

1.进行备份文件

2.vi /etc/redis/sentinel.conf:编辑文件

设置时间为10s

选举出新的master后其他slave会进行同步,1表示一个一个同步,2则表示两个两个同步,设置的越多速度越快,但是不可用节点越多

表示升级成为master最多不能超过3分组

3.拷贝文件给其他主机,并且进行备份数据(全部备份,哨兵会更改数据)

4.启动哨兵

vi /etc/redis/sentinel.conf:进入此文件会多一条数据进行添加

5.进行测试:

master进行下线,选举新的master,vi /etc/redis/sentinel.conf内容会被更改

6.问题:当master的一段网断了一段时间(master依旧认为自己是master),但是其他slave会进行重新选举master,所以在网端期间,写入master的数据会被全部刷掉,去匹配新的master

临时解决方法:++当master的slave数量最少为2个的时候才能进行写入数据,防止断网情况++

永久更改方法:vi /etc/redis/6379.conf

相关推荐
数据智能老司机17 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机18 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿18 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
Kagol18 小时前
macOS 和 Windows 操作系统下如何安装和启动 MySQL / Redis 数据库
redis·后端·mysql
无名之逆18 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s91236010118 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机18 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
hzulwy19 小时前
Redis常用的数据结构及其使用场景
数据库·redis
程序猿熊跃晖19 小时前
解决 MyBatis-Plus 中 `update.setProcInsId(null)` 不生效的问题
数据库·tomcat·mybatis
ashane131420 小时前
Redis 哨兵集群(Sentinel)与 Cluster 集群对比
redis