一、Redis简介
1.关于关系型数据库和nosql数据库
关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据 库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql数据库 要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,所以在实 际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证。
2.noSQL特点
在大数据存取上具备关系型数据库无法比拟的性能优势, 例如:
- 易扩展
• NoSQL数据库种类繁多, 但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系, 这样就非常容易扩展。也无形之间, 在架构的层面上带来了可扩展的能力。 - 大数据呈, 高性能
• NoSQL数据库都具有非常高的读写性能, 尤其在大数据呈下, 同样表现优秀。这得益千它的无关系性, 数据库的结构简单。 - 灵活的数据模型
• NoSQL无需事先为要存储的数据建立字段, 随时可以存储自定义的数据格式。而在关系数据库里, 增删字段是一件非常麻烦的事情。如果是非常大数据呈的表, 增加字段简直就是一个疆梦。这点在大数据星的Web2.0时代尤其明显。 - 高可用
• NoSQL在不太影响性能的情况, 就可以方便的实现高可用的架构。比如Cassandra, HBase模型, 通过复制模型也能实现高可用。综上所述, NoSQL的非关系特性使其成为了后Web2.0时代的宠儿, 助力大型Web2.0网站的再次起飞, 是一项全新的数据库革命性运动。
3.什么是redis
Redi s 是用 C 语言开发的一个开源的高性能键值对 ( key-value) 数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目 前为止Redis 支待的键值 数据类型如下:
1 、 字符串类型
2、 散列类型
3、 列表类型
4、 集合类型
5、 有序集合类型。
4.redis 的应用场景
• 缓存(数据查询、短连接、新闻内容、商品内容等等)(最多使用)
• 聊天室的在线好友列表。
• 任务队列。(秒杀、抢购、12306 等等)
• 应用排行榜。
• 网站访问统计 。
• 数据过期处理(可以精确到毫秒)
• 分布式栠群架构中的 session 分离。
二、Redis的安装
1.安装环境
安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
版本说明:本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。
2.安装步骤
1、下载redis的源码包。http://download.redis.io/releases/redis-3.0.0.tar.gz
2、把源码包上传到linux服务器
alt+p打开SecureCRT的SFTP窗口:put E://redis-3.0.0.tar.gz
默认放到root文件夹
3、解压源码包
tar -zxvf redis-3.0.0.tar.gz
4、进入解压后的目录进行编译,将.c文件编译为.o文件
cd /usr/local/redis-3.0.0 make
编译成功
5、安装到指定目录
make PREFIX=/usr/local/redis install
安装完后,在/usr/local/redis/bin下有几个可执行文件
1 | redis-benchmark ---一性能刹试工具 |
redis3.0新增的redis-sentinel是redis集群管理工具可实现高可用。
6、如需远程连接redis,需配置redis端口6379在linux防火墙中开发
/sbin/iptables -I INPUT -p tcp —dport 6379 -j ACCEPT
/etc/rc.d/init.d/iptables save
3.启动Redis
3.1前端启动模式
/usr/local/redis/bin/redis-server
直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是启动完成后,不能再进行
其他操作,如果要操作必须使用ctrl+c,同时redis-server程序结束,不推荐使用此方法。
解决方案:可以通过修改配置文件 配置redis后台启动,即服务器启动了但不会穿件控制台窗口
3.2后端启动
1、从redis的源码目录中复制redis.conf到redis的安装目录
cp redis.conf /usr/local/redis/bin/
2、修改配置文件
3、打开服务
./redis-server redis.conf
4、打开客户端
./redis-cli
redis默认使用6379端口。
也可更改redis.conf文件,修改端口号:
redis常用命令:1.get/set 2.ping/pong 3.del 4.keys *
三、Redis集群的搭建
1.需要的环境
搭建集群需要使用到官方提供的ruby脚本。需要安装ruby的环境。
安装ruby
yum install ruby
yum install rubygems
redis集群管理工具redis-trib.rb
[root@bogon ~]# cd redis-3.0.0
[root@bogon redis-3.0.0]# cd src
[root@bogon src]# ll *.rb
-rwxrwxr-x. 1 root root 48141 Apr 1 07:01 redis-trib.rb
安装ruby和redis的接口程序
先上传redis-3.0.0.gem到Linux服务器
gem install redis-3.0.0.gem
环境搭建完成
2.集群结点规划
集群中有三个节点的集群,每个节点有一主一备。需要6台虚拟机。搭建一个伪分布式的集群,使用6个redis实例来模拟。
在同一台服务器用不同的端口表示不同的redis服务器,如下:
主节点:192.168.101.3:7001 192.168.101.3:7002 192.168.101.3:7003
从节点:192.168.101.3:7004 192.168.101.3:7005 192.168.101.3:7006
在/usr/local下创建redis-cluster目录,其下创建redis01,将redis安装目录bin下的文件拷贝到redis1中
cd /usr/local
mkdir redis-cluster
[root@localhost local]# cd redis
[root@localhost redis]# cp -r bin ../redis-cluster/redis01
修改配置文件
cd ../redis-cluster/redis01/
rm -f dump.rdb
vim redis.conf
找cluster小技巧:输入/cluster直接定位
拷贝redis01的所有内容到redis02…..06
cp -r redis01/ redis02
cp -r redis01/ redis03
……
修改每一个redis下面配置文件的端口号
vim redis02/redis.conf……
将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。
cd redis-3.0.0/src
cp *.rb /usr/local/redis-cluster/
3.启动每个结点redis服务
vim startall.sh
在脚本添加如下内容
1 | cd redis01 |
给予执行权限
chmod +x startall.sh
查看ps aux|grep redis
4.执行创建集群命令
执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。
./redis-trib.rb create —replicas 1 192.168.10.130:7001 192.168.10.130:7002 192.168.10.130:7003 192.168.10.130:7004 192.168.10.130:7005 192.168.10.130:7006
注意:
如果执行时报如下错误:
[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0
解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb
5.测试集群
redis01/redis-cli -h 192.168.10.130 -p 7003 -c
其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号
cluster nodes 查询集群结点信息
cluster info 查询集群状态信息
6.关闭redis
为了以后方便,创建shutdown.sh脚本
1 | redis01/redis-cli -p 7001 shutdown |
这里面有vim小技巧:
在光标的位置按“yy”,复制当前行;然后再光标的行按“p”,粘贴到下一行,原来的往下顺移。
给权限:chmod +x shutdown.sh
执行并查看进程:
./shutdown.sh
ps aux|grep redis
结语
能把机票报销一下吗?这个月飞机都是为你打的(奇怪的知识增加了)