九章——Redis群集(应用——linux防护与群集)

本文详细介绍了Redis的基础知识,包括关系型数据库与非关系型数据库的区别,Redis的特点,如高读写速度、丰富的数据类型和数据持久化。接着深入探讨了Redis群集的原理和部署,包括群集的无中心结构、节点角色和端口功能。最后,提供了Redis集群部署的步骤和使用ruby脚本创建集群的方法。
摘要由CSDN通过智能技术生成

三期总目录链接

目录

一、Redis介绍

(一)关系型数据库与非关系型数据库

1、关系型数据库

2、非关系型数据库

3、非关系型数据库产生背景

(二)Redis基础

1、Redis简介

2、Redis的优点

3、应用场景

4、Redis安装部署

(三)Redis命令工具

 1、redis-cli命令行工具

2、redis-benchmark测试工具

(四)Redis 数据库常用命令

1、key相关命令

2、多数据库常用命令

二、Redis群集

(一)Redis群集原理

(二)部署Redis群集

1、部署环境 

2、使用脚本创建群集

复习题


一、Redis介绍

(一)关系型数据库与非关系型数据库

 数据库按照其架构可以分为关系型数据库与其他数据库,其他数据库统称为非关系型数据库

1、关系型数据库

一个结构化的数据库,创建在关系模型基础上,一般面向于记录
主流的关系型数据库有:Oracle、MySQL、SQL Server、Microsoft Access、DB2等

2、非关系型数据库

NoSQL(NoSQL=Not Only SQL):意思是“不仅仅是SQL”,是非关系型数据库的总称,它可以作为关系型数据库的良好补充;随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题
主流的关系型数据库有:Redis、MongBD、Hbase、CouhDB等

3、非关系型数据库产生背景

3.1 High performance——对数据库高并发读写需求

web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求,例如网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当普遍的需求

3.2 Huge Storage——对海量数据高效存储与访问需求

类似Facebook,twitter,Friendfeed这样的SNS网站,每天用户产生海量的用户动态,以Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数据库也很难应付

3.3 High Scalability && High Availability——对数据库高可扩展性与高可用性需求

在web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,其工作量是非常庞大的

  关系型数据库和非关系型数据库都有各自的特点与应用场景,两者的紧密结合将会给 Web 2.0的数据库发展带来新的思路。
让关系型数据库关注在关系上,非关系型数据库关注在存储上

(二)Redis基础

1、Redis简介

  Redis是一个开源的、使用c语言编写、支持网络、基于内存运行并支持持久化的日志型,采用key-value(键值对)数据库

2、Redis的优点

1)具有极高的数据读写速度

redis是将数据存放到内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中,redis优点:存取速度快,官方称读取速度会达到30万次每秒,写速度在10万次每秒最少,具体限制于硬件

2)支持丰富的数据类型

redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前Redis支持的键值数据类型有字符串类型 散列类型 列表类型 集合类型

3)支持数据的持久化

可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务
缺点:对持久化支持不够良好
所以redis一般不作为数据的主数据库存储,一般配合传统的关系型数据库使用

4)原子性

redis的所有操作都是原子性的

5)支持数据备份

master-slave模式的数据备份

6)功能丰富

  Redis可以为每个键设置生存时间,时间到期后该键被自动删除,这一功能配合出色的性能让Redis可以作为缓存系统来用
  作为缓存系统,Redis还可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰不需要的键。
  Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易的实现一个高性能的优先级队列
  Redis还支持“发布/订阅”的消息模式

3、应用场景

  Redis 作为基于内存运行的数据库,缓存是其较常应用的场景之一,除此之外,Redis常见应用场景还包括获取最新N个数据的操作.排行榜类应用.计数器应用、存储关系、实时分析系统,日志记录等

适用场景:数据高并发的读写;海量数据的读写;对扩展性要求高的数据

4、Redis安装部署

编译安装redis

[root@C7-06 ~]# tar xf redis-3.2.9.tar.gz -C /usr/src
[root@C7-06 ~]# cd /usr/src/redis-3.2.9/
[root@C7-06 redis-3.2.9]# ls       #查看
00-RELEASENOTES  CONTRIBUTING  deps     Makefile   README.md   runtest          runtest-sentinel  src    utils
BUGS             COPYING       INSTALL  MANIFESTO  redis.conf  runtest-cluster  sentinel.conf     tests

源码包提供了makefile文件,直接编译安装即可

[root@C7-06 redis-3.2.9]# make
.......
...
[root@C7-06 redis-3.2.9]# make install
cd src && make install
make[1]: 进入目录“/usr/src/redis-3.2.9/src”

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: 离开目录“/usr/src/redis-3.2.9/src”

说明:在安装过程中,如果想更改默认路径可以使用下面的命令格式:

made PREFIX=安装路径 install

make install 只是安装了二进制文件到系统中,没有启动脚本和配置文件;软件包中默认提供了一个install_server脚本文件,通过该脚本可以设置Redis服务所需要的相关配置文件

[root@C7-06 redis-3.2.9]# cd /usr/src/redis-3.2.9/utils/
[root@C7-06 utils]# ls
build-static-symbols.tcl  generate-command-help.rb  lru                    redis-sha1.rb
cluster_fail_time.tcl     hashtable                 redis-copy.rb          releasetools
corrupt_rdb.c             hyperloglog               redis_init_script      speed-regression.tcl
create-cluster            install_server.sh         redis_init_script.tpl  whatisdoing.sh
  
[root@C7-06 utils]# ./install_server.sh       #启动脚本
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]                    #默认侦听端口
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]           #默认配置文件
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]           #日志文件
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]  #数据库目录
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]     #执行命令
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli                                 #客户端命令
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!


Successfully added to runlevels 345!
Starting Redis server...

Installation successful!

[root@C7-06 utils]# netstat -anpt|grep redis    #查看redis端口
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      4750/redis-server 1 

安装完成后可以使用/etc/init.d/redis_6379 来进行启动、停止、重启服务

[root@C7-06 utils]# /etc/init.d/redis_6379 stop    #停止服务
Stopping ...
Redis stopped
[root@C7-06 utils]# netstat -anpt|grep redis

[root@C7-06 ~]# /etc/init.d/redis_6379 start       #启动服务
Starting Redis server...
[root@C7-06 ~]# netstat -anpt|grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      4946/redis-server 1 

[root@C7-06 ~]# /etc/init.d/redis_6379 restart    #重启服务
Stopping ...
Redis stopped
Starting Redis server...

[root@C7-06 ~]# /etc/init.d/redis_6379 status     #查看状态
Redis is running (4974)

编辑redis主配置文件:绑定当前ip地址(只修改ip其他为介绍)

[root@C7-06 ~]# vim /etc/redis/6379.conf

......
...
bind 127.0.0.1 192.168.1.1                    #添加本机地址:192.168.1.1   在62行
.......
...

保存退出

[root@C7-06 ~]# /etc/init.d/redis_6379 restart   #重启服务
Stopping ...
Redis stopped
Starting Redis server...

 如果出现 Could not connect to Redis at 127.0.0.1:6379: Connection refused 的报错

[root@C-06 utils]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>

打开配置文件找到  daemonize  no  修改为 daemonize yes  这样就可以默认启动后台运行

 redis主配置文件解释

[root@C7-06 ~]# grep -v "^#" /etc/redis/6379.conf | grep -v "^$"
bind 192.168.1.1                     #监听的主机地址
protected-mode yes                   #是否开启保护模式,默认开启,已指定bind和密码:只会本地进行访问,拒绝外部访问,未指定bind和密码:最好关闭,设置为no
port 6379                  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘浪初心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值