前言
redis是非关系型数据库,本质是一个基于内存的数据库,所有数据和结构都存储在内存中,所以redis所有的操作都非常高速。它支持数据的备份,即master-slave模式的数据备份,支持数据的持久化,可以将内存中的数据保存在磁盘中,具有两种持久化方式----RDB方式和AOF方式。具有客户端和服务端两部分,客户端和服务端可以部署在不同的机器上,他们直接通过自定义的协议交互,平时说的redis通常指的是服务端。端口号默认为6379,因为 6379 在手机按键上 MERZ 对应的号码,而据说 MERZ 取自意大利歌女 Alessia Merz 的名字
主要有多数据库和事务两个特性,默认支持16个数据库,客户端与Redis建立连接后会自动选择0号数据库;并且redis的事务和关系型的事务不一样,传统的数据库事务一组操作单元,要么全部成功,要么全都失败,而Redis在执行一个命令集合的时候,可能会出现集合的一些命令成功,一些命令失败。
Redis有五种数据类型,分别是String、List、Set、Hash和Sorted Set(zset)
String 可以是字符串、整数或浮点,统称为元素,是 Redis 最基本的数据类型
List是一个序列集合(有序),且每个结点都包好了一个元素 ,按照插入顺序排序
Set 各不相同(唯一)的元素,从集合中插入或删除元素,集合是通过哈希表实现的
Hash是带key-value 的散列组,其中Key是字符串,value是元素按照key进行增加删除
Sorted Set(zset) 是带分数的score-value有序集合,其中score为浮点,value为元素
应用场景有缓存、队列、数据存储、网站访问统计和数据过期处理等
一、redis安装
1、环境准备
yum -y install gcc
redis-4.0.9.tar.gz
CentOS 7.x
2、拷贝到Linux的/usr/local中,执行解压操作
tar -zxvf redis-4.0.9.tar.gz
mv redis-4.0.9 redis #改名
2、编译安装
cd redis
make #编译
make install #安装
4、拷贝配置文件,方便管理
在redis目录下创建bin和etc文件
mkdir etc bin
找到redis.conf,将其复制移动到 新建的etc 下
mv redis.conf /usr/local/redis/etc/
cd /usr/local/redis/src #进入src目录,继续拷贝以下文件
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/
5、启动redis
在/usr/local/redis/bin/目录下执行
./redis-server #启动redis
这时redis已经成功启动了,但是因为是前台启动,我们不能做任何操作,关闭窗口,redis就关闭了
5、后台启动redis
vim /usr/local/redis/etc/redis.conf
将daemonize属性改为yes
然后再次进入usr/local/redis/bin目录启动redis
cd /usr/lcoal/redis/bin
./redis-server /usr/local/redis/etc/redis.conf #指明配置文件启动redis
redis-cli #连接本地的redis服务
redis-cli -h host -p port -a password #客户端连接远程服务 指定主机IP和端口号,若有时出现中文乱码 在 redis-cli 后面加上 --raw就可避免
redis-cli shutdown #停止redis服务,当然也可以强行杀死进程,但是这样可能会造成持久化的数据丢失
二、ruby安装
1、环境准备
Ruby是一种纯粹的面向对象编程语言。
ruby-2.2.2.tar.gz
CentOS 7.x
2、拷贝到Linux的/usr/local中,执行解压操作
tar zxvf ruby-2.2.2.tar.gz
mv ruby-2.2.2 ruby #改名
3、编译安装
cd ruby #进入ruby安装目录
./configure
make
make install
export PATH=/usr/local/ruby/bin:$PATH #环境变量设置
问题:ERROR: Loading command: install (LoadError) cannot load such file – zlib ERROR: While executing gem … (NoMethodError) undefined method `invoke_with_build_args’ for nil:NilClass
解决方法: yum -y install zlib zlib-devel
问题:ERROR: Loading command: install (LoadError) cannot load such file – openssl
解决方法:yum -y install openssl openssl-devel
4、检测是否安装好
ruby -v
三、rubygems安装
1、环境准备
RubyGems 是 Ruby 的一个包管理器,它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具
rubygems-3.0.6.tgz
CentOS7.x
2、拷贝到Linux的/usr/local中,执行解压操作
tar -zxvf rubygems-3.0.6.tgz
3、进入解压目录,执行命令
cd rubygems-3.0.6
ruby setup.rb #若提示ruby命令没找到 但是ruby已经安装了 可能是因为没添加到环境变量
四、redis-3.2.1.gem安装(redis和ruby的 接口程序)
1、将软件上传到/usr/local目录下
2、执行命令
gem install -l redis-3.2.1.gem
五、redis单机多节点集群搭建
1、创建节点
我们先在根目录下创建一个redis_cluster目录,因为要搭建三主三从总共六个节点,在redis_cluster目录下再创建六个节点目录
mkdir /redis_cluster
cd /redis_cluster
mkdir redis_7001 redis_7002 redis_7003 redis_7004 redis_7005 redis_7006 #创建节点目录
2、修改配置
分别复制redis安装目录下的redis.conf配置文件到/redis_cluster下的六个节点目录中,如上图
以redis_7001为例
cp /usr/local/redis/etc/redis.conf /redis_cluster/redis_7001/
按照类似操作依次复制到redis_7002-7006节点目录当中
接下来要分别修改这六个节点的配置文件
以redis_7001为例:
port 7001 //六个节点配置文件端口分别是7001-7006
daemonize yes //redis后台运行
pidfile /var/run/redis_7001.pid //pidfile文件对应7001-7006
cluster-enabled yes //开启集群
cluster-config-file nodes_7001.conf //保存节点配置,自动创建,自动更新对应7001-7006
cluster-node-timeout 5000 //集群超时时间,节点超过这个时间没反应就断定是宕机
appendonly yes //存储方式,aof,将写操作记录保存到日志中
注意:根据不同的节点目录按相应要求修改即可,上述操作的要去掉前面的# 否则被注释,该行不起作用
3、启动节点的redis
为方便启动,可以写一个启动脚本,以后每次启动执行脚本即可
脚本内容如下:
#!/bin/bash
#redis server start
cd /usr/local/redis/bin/
./redis-server /redis_cluster/redis_7001/redis.conf
./redis-server /redis_cluster/redis_7002/redis.conf
./redis-server /redis_cluster/redis_7003/redis.conf
./redis-server /redis_cluster/redis_7004/redis.conf
./redis-server /redis_cluster/redis_7005/redis.conf
./redis-server /redis_cluster/redis_7006/redis.conf
执行脚本,启动6个节点
sh openredis.sh #openredis.sh是我的脚本名
查看redis是否启动
ps aux | grep redis
4、创建集群
复制redis的src目录下的redis-trib.rb文件到redis-cluster目录
cp /usr/local/redis/src/redis-trib.rb /redis_cluster/
cd /redis_cluster
./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 #--replicas 1 表示为每个主节点创建一个从节点
5、验证
cd /usr/local/redis/bin #即redis-cli所在的目录
./redis-cli -c -p 7001 #-c 代表集群模式 -p 表示端口号-h表示主机地址
./redis-trib.rb del-node 127.0.0.1:7001 97093dbf1f03d773400423feed29c24c8995284b
127.0.0.1:7001 从节点;97093dbf1f03d773400423feed29c24c8995284b 从节点ID
添加从节点
./redis-trib.rb add-node --slave --master-id be76239d591b88a5dd0c7fa686dc1c1792abdda4 127.0.0.1:7004 127.0.0.1:7005
–slave 表示添加的是从节点
-master-id be76239d591b88a5dd0c7fa686dc1c1792abdda4 主节点的node-id
127.0.0.1:7004 主节点
查看集群节点
cluster nodes
查看key对应的slot
cluster keyslot key
查看slot和节点的对应关系
cluster slots
查看集群信息
cluster info
(注:部分资料来源于网络,如有侵权,请联系作者)