REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
修改conf/redis.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态
# 开启RDB # save "" save 3600 1 save 300 100 save 60 10000 # 关闭AOF appendonly no
创建每个节点工作目录
[root@localhost redis]# pwd /root/redis mkdir 7001 7002 7003
然后将conf/redis.conf文件拷贝到三个目录中
# 方式一:逐个拷贝 cp conf/redis.conf 7001 cp conf/redis.conf 7002 cp conf/redis.conf 7003 # 方式二:管道组合命令,一键拷贝 echo 7001 7002 7003 | xargs -t -n 1 cp conf/redis.conf
修改每个实例的端口、工作目录等
# Accept connections on the specified port, default is 6379 (IANA #815344). # If port 0 is specified Redis will not listen on a TCP socket. port 7001 # If a pid file is specified, Redis writes it where specified at startup # and removes it at exit. pidfile /var/run/redis_7001.pid # The working directory. dir /root/redis/7001/ # Specify the log file name. Also the empty string can be used to force # Redis to log on the standard output. Note that if you use standard # output for logging but daemonize, logs will be sent to /dev/null logfile "/root/redis/7001/redis7001.log"
虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信息,格式如下:
# 逐一执行 sed -i '1a replica-announce-ip 192.168.3.22' 7001/redis.conf sed -i '1a replica-announce-ip 192.168.3.22' 7002/redis.conf sed -i '1a replica-announce-ip 192.168.3.22' 7003/redis.conf # 或者一键修改 printf '%s\n' 7001 7002 7003 | xargs -I{} -t sed -i '1a replica-announce-ip 192.168.3.22' {}/redis.conf
启动
redis-server /root/redis/7001/redis.conf # 或者使用如下命令全部启动 printf '%s\n' 7001 7002 7003 | xargs -I{} -t redis-server /root/redis/{}/redis.conf
停止
redis-cli -p 7001 shutdown # 或者使用如下命令全部停止 printf '%s\n' 7001 7002 7003 | xargs -I{} -t redis-cli -p {} shutdown
开启主从
修改配置文件(永久生效),在redis.conf中添加一行配置
slaveof 192.168.3.22 7001
使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效)
slaveof <masterip> <masterport>
配置后查看主从状态
# 连接 7001 redis-cli -p 7001 # 查看状态 info replication
显示如下:
# Replication role:master connected_slaves:2 slave0:ip=192.168.3.22,port=7002,state=online,offset=574,lag=1 slave1:ip=192.168.3.22,port=7003,state=online,offset=574,lag=1 master_failover_state:no-failover master_replid:1f49f1a71e1dfb25fef7fff95ac0556239430244 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:574 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:574
如上则表示主从关系配置成功。
Java小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: