一、安装
1、去官网下载:http://download.redis.io/releases/
2、redis-2.8.17.tar.gz下载以后的文件放到服务器目录下(如:/usr/local 以下全部以此路径)
3、解压
tar xf redis-2.8.17.tar.gz
4、进入redis-2.8.17目录下进行编译和安装,
编译:执行make命令
make
安装:执行make PREFIX=/usr/local/redis install
make PREFIX=/usr/local/redis install
二、启动
1、进入redis的bin目录下
cd /usr/local/redis/bin
2、复制redis.conf到/usr/local/redis/bin下
cp /usr/local/redis-2.8.17/redis.conf /usr/local/redis/bin/
3、编辑刚才修改的文件
vim redis.conf
搜索 daemonize;默认值为no,修改为yes,保存退出
4、启动:
./redis-server redis.conf
启动时若不加redis.conf 不会后台允许
查看redis进程是否启动成功:ps -ef|grep redis
5、停止命令
kill 进程号
或 通过客户端关闭
./redis-cli shutdown
三、修改远程端口和连接地址
1、修改端口号
cd /usr/local/redis/bin/
vim redis.conf
搜索 port 默认值:6379
2、外部连接地址
在(三 1)中搜索bind
放开注释
127.0.0.1表示只有本机可以连接
0.0.0.0表示允许任何ip连接
实际开发中可以指定特定ip可以连接
继续搜索timeout
0表示没有超时时间,可以指定一个超时时间:300 单位是秒
保存退出
四、启动多个redis
方法1 覆盖端口
./redis-server redis.conf --port 6380
./redis-server redis.conf --port 6381
./redis-server redis.conf --port 6382
方法2 多个配置文件方法:复制redis.conf文件,修改端口号
./redis-server redis6380.conf
./redis-server redis6381.conf
./redis-server redis6382.conf
方法3 copy多个bin目录,修改每个配置文件的端口,启动自己的配置文件
cd /usr/local/redis/bin6380
./redis-server redis.conf
cd /usr/local/redis/bin6381
./redis-server redis.conf
cd /usr/local/redis/bin6382
./redis-server redis.conf
五、客户端的使用
进入bin目录
./redis-cli
或者指定端口
#启动6380
./redis-cli -p 6380
#启动6381
./redis-cli -p 6381
在客户端关闭redis命令
shutdown
六、密码设置
cd /usr/local/redis/bin/
vim redis.conf
搜索 requirepass
打开注释,默认密码是foobared,修改为自己的密码即可。
保存退出
密码生效需要重新启动redis
启用密码后,若使用客户端会提示没有授权,每个命令都要授权才能执行。./redis-cli 执行get key命令提示需要授权;执行授权命令 auth 设置的密码
七、redis事务
redis事务可以一次执行多个命令并且有以下两个特征
事务是一个单独的隔离操作:
- 事务中的所有命令都会被序列化,按顺序地执行
- 事务在执行过程中,不会被其他客户端发来的命令请求所打断
事务是一个原子操作:
- 事务中的命令要么全部执行,要么全部不执行
登录redis客户端,执行一个事务
取消事务,设置k3值错误了,取消掉
八,redis主从复制
主从复制特点
- Master可以拥有多个Slave;
- 多个Slave可以连接同一个Master,还可以连接到其他的Slave;
- 主从复制不会阻塞Maseter,在同步数据时,Master可以继续处理Client请求
- 提供系统的伸缩性
redis主从复制配置,只需在从数据库的配置文件中加上如下命令即可,主数据库不需要任何修改
- slaveof 主数据库地址 主数据库端口
配置步骤:
- 从新安装一份redis作为从库
- 设置端口号:如6380
- 设置slaveof 主数据库地址 主数据库端口
- 设置masterauth 主库密码(主库未启用密码可不用设置)
注意:修改从库为后台启动,
保存退出,启动从库。保证主库已经启动服务,自行测试结果。
九、redis持久化
redis持久化机制:支持两种方式RDB和AOF,RDB一定时间取存储文件(保证效果可用此),AOF默认每秒去存储历史命令,官方建议两种方式同时使用。没有持久化的redis和mamcache一样,相当于一个纯内存数据库。不加磁盘存储数据丢就丢了...
RDB默认开启redis.conf中的配置如下:
save 900 1 #900秒内超过1个key被修改,则发起快照保存
save 300 10 #300秒内超过10个key被修改,则发起快照保存
save 60 10000 #60秒内超过10000个key被修改,则发起快照保存
dbfilename dump.rdb #持久化数据存储在本地文件名
dir ./ #持久化数据存储在本地路径
AOF默认开启redis.conf中的配置如下:
appendonly no/yes #启动aof持久化,持久化有三种方式
appendfsync always #收到写命令立刻写入磁盘,效率最慢,但是保证完整的持久化
appendfsync everysec #每秒写一次硬盘,性能和持久化方面做的很好
appendfsync no #完全依赖os,性能最佳,但是持久化没有保证
十、redis集群创建
redis集群的特点:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽
(2)节点的fa11是通过集群中超过半数的节点检测失效时才生效
(3)客户端与 redis节点直连,不需要中间 proxy层,客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4) redis-cluster把所有的物理节点映射到[0-16383]slot上, cluster负责维护 nodec< - >slot< - >value
Reds集群中内置了16384个哈希槽,当需要在Redis集群中放置一个key- value时, redis先对key使用crc16算法算出一个结果,然后把结果对16384求余数,这样每个key都会对应一个编号在0-16383之间的哈希槽, redis会根据节点数量大致均等的将哈希槽映射到不同的节点
redis集群的搭建:
redis集群中至少应该有三个节点,要保证集群的高可用,需要每个节点有一个备份机,则至少需要6台服务器
搭建伪分布式,可用一台虚拟机运行6个redis实例,然后修改redis的端口即可
修改6台redis配置文件为后台启动和运行任何ip访问或者单机的修改端口号
----以下以6台虚拟机为例----
6台虚拟机分别安装好redis,目录/usr/local/redis/
集群环境搭建:
1、分别进入/usr/local/redis/bin目录,修改redis.conf文件
daemonize yes
bind 0.0.0.0
不需要设置密码,因为是6台虚拟机,所以不需要修改端口号,若是在一台机器上需要修改端口号。
2、使用ruby脚本搭建集群,需要ruby运行环境
[sxxaad@192 bin] yum -y install ruby rubygems
3、上传并安装ruby脚本运行使用的包 以redis-3.3.5.gem为例
分别上传以上文件到6台虚拟机中,完成以后执行以下命令安装
gem install redis-3.3.5.gem
安装成功以后分别进入6台虚拟机的/usr/local/redis-2.8.17/src下查看所有文件,会有一个redis-trib.rb文件,此文件可以移动,给它移动到redis的bin目录下执行以下命令:
./redis-trib.rb create --replicas 1 192.168.0.1:6379 192.168.0.2:6379 192.168.0.3:6379 192.168.0.4:6379 192.168.0.5:6379 192.168.0.6:6379
执行之前请自查以下可能会出现的问题:
- 确保所有redis没有开启主从
- 确保所有的redis.conf文件中的注释已经打开并且开启集群 cluster-enabled yes
- 停掉所有redis后删除/usr/local/redis/bin下的dump.rdb和nodes.conf
集群搭建成功连接客户端使用以下命令
./redis-cli -p
当使用set/get命令时会自动重定向到某个节点上。