Redis集群

		第九章 Redis集群

1.关系数据库与非关系型数据库
1.1关系型数据库
1)一个结构化的数据库,创建在关系模型基础上,一般面向于记录
2)包括Oracle、MySQL、SQL Server、Microsoft Access、DB2等

1.2 非关系型数据库
1)除了主流的关系型数据库以外的数据库,都认为是非关系型的

NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:

2)包括Redis、MongBD、Hbase、CouhDB等

2.非关系型数据库产生背景
2.1 High performance——对数据库高并发读写需求

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

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

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

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

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

NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

3.Redis简介
3.1 Redis基于内存运行并支持持久化,采用key-value(键值对)的存储形式

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

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

2)支持丰富的数据类型

edis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:

字符串类型 散列类型 列表类型 集合类型

3)支持数据的持久化
即可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务。

缺点:对持久化支持不够良好。

所以redis一般不作为数据的主数据库存储,一般配合传统的关系型数据库使用
.
4)原子性—redis的所有操作都是原子性的

5)支持数据备份—master-slave模式的数据备份

6)功能丰富

Redis可以为每个键设置生存时间,时间到期后该键被自动删除,这一功能配合出色的性能让Redis可以作为缓存系统来用。作为缓存系统,Redis还可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定的规则自动淘汰不需要的键。

Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易的实现一个高性能的优先级队列。Redis还支持“发布/订阅”的消息模式。

3.3 redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用) 分布式集群架构中的session分离。 聊天室的在线好友列表。 任务队列。(秒杀、抢购、12306等等) 应用排行榜。 网站访问统计。 数据过期处理(可以精确到毫秒)

实例:Redis安装部署
实验环境:
1.linux-1 redis服务器
192.168.10.1

实验步骤:

  1. redis的编译安装
    [root@localhost ~]# tar xf redis-3.2.9.tar.gz -C /usr/src

[root@localhost ~]# cd /usr/src/redis-3.2.9/

[root@localhost redis-3.2.9]# ls

00-RELEASENOTES INSTALL runtest tests
BUGS Makefile runtest-cluster utils
CONTRIBUTING MANIFESTO runtest-sentinel
COPYING README.md sentinel.conf
deps redis.conf src

源码包提供了makefile文件,直接编译安装即可
[root@localhost redis-3.2.9]# make

[root@localhost redis-3.2.9]# make install

安装时需要更改默认路径时,使用此命令; make prefix=安装路径 install

上述只是安装了二进制文件,没有启动脚本和配置文件。可运行相关脚本进行创建

[root@localhost redis-3.2.9]# cd /usr/src/redis-3.2.9/utils/

[root@localhost utils]# ls

build-static-symbols.tcl lru
cluster_fail_time.tcl redis-copy.rb
corrupt_rdb.c redis_init_script
create-cluster redis_init_script.tpl
generate-command-help.rb redis-sha1.rb
hashtable releasetools
hyperloglog speed-regression.tcl
install_server.sh whatisdoing.sh

[root@localhost 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 =>

[root@localhost utils]# /etc/init.d/redis_6379 start ##启动服务脚本

Installing service…
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server…
Installation successful!

查看服务运行侦听端口
[root@localhost utils]# netstat -anpt|grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 4235/redis-server 1

停止、启动、重启、查看服务状态
[root@localhost utils]# /etc/init.d/redis_6379 stop

[root@localhost utils]# /etc/init.d/redis_6379 start

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

[root@localhost utils]# /etc/init.d/redis_6379 status

编辑redis主配置文件:绑定当前ip地址

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

62行
bind 127.0.0.1 192.168.10.1

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

查看redis主配置文件
[root@localhost ~]# grep -v “^#” /etc/redis/6379.conf |grep -v “^$”

bind 127.0.0.1 192.168.10.1

protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis_6379.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值