NoSQL主从复制,持久化,数据类型

快速搭建redis主从结构

1. 工作原理

  • slave向master发送sync命令
  • master启动后台存盘进程,并收集所有修改数据命令
  • master完成后台存盘后,传送整个数据文件到slave
  • slave接收数据文件,加载到内存中完成首次完全同步
  • 后续有新数据产生时,master继续收集数据修改命令依次传给slave,完成同步

1.1 配置redis主从

>slaveof  主ip    主端口
>info replication //查看复制信息
role:	//角色
master_lost://主库ip地址
master_port://主库端口号
master_link_status://与主库连接状态
]# vim /etc/redis/6379.conf
282 slaveof 主ip    主端口
1.1.1反客为主,恢复主服务器
> slaveof  no  one //命令行临时设置
]# vim /etc/redis/6379.conf
...
slaveof 192.168.1.11 6311 //永久配置
1.1.2密码验证
修改配置文件/etc/redis/6379.conf
requirepass 123456		//定义连接密码
192.168.4.52:6352> CONFIG get masterauth
1) "masterauth"
2) ""
192.168.4.52:6352> CONFIG set masterauth 	"123456"
OK
192.168.4.52:6352> CONFIG get masterauth
1) "masterauth"
2) "123456"
192.168.4.52:6352> config rewrite

1.2 哨兵服务

	1 安装源码redis软件
	2 编写主配置文件
	]# vim  /etc/sentinel.conf
	   bind
	   sentinel monitor redisser 192.168.1.13 6313 1
	:wq
	3 启动哨兵服务
	]# redis-sentinel /etcsentinel.conf

	4 测试配置
	  停止主服务器192.168.4.53的redis服务

数据类型

1.String字符串

set 赋值  |   setrange 修改特定位的值  |   strlen key 统计长度 | getrange key start end 获取字符串
set key value [ex seconds] [px milliseconds] [nx|xx]
- 设置key及值,过期时间可以使用秒或者毫秒为单位
setrange key offset value
- 从偏移量开始复写key的特定位的值
> set first "hello world"
> setrange first 6 "Redis" 	//改写为hello Redis
strlen key, 统计字串长度
> strlen first
getrange key start end
- 返回字串值中的子字串,截取范围为start和end
- 负数偏移量表示从末尾开始计数,-1表示最后一个字符,-2表示倒数第二个字符
> set list "hello,the world"
> getrange list -5 -1
> getrange list 0 -1
append 追加  |   setbit key offset value 位存储  |   bitcount key 统计个数
append key value
- 存在则追加,不存在则创建key及value,返回key长度
> append myname jacob
setbit key offset value
- 对key所存储字串,设置或清除特定偏移量上的位(bit)
- value的值可以为1或者0,offset为0~2^32之间
- key不存在,则创建新key
> setbit bit 1 1		//设置bit第1位为1
> setbit bit 2 0		//设置bit第2位为0
bitcount key
- 统计字串中被设置为1的比特位数量
 场景说明:记录网站用户上线频率,如用户A上线了多少天等类似的数据
  如用户在某天上线,则使用setbit,以用户名为key,讲网站上线日为offset,并在该offset上设置1,最后计算用户总上线次数时,使用bitcount用户名即可.
  这样即使网站运行10年,每个用户仅占用10*365比特位即456字节

2.List列表

Redis的list是一个字符队列
先进后出
一个key可以有多个值
lpush 新建/插入  |   lrange 范围读取   |  lset 修改
lpush key value [v1 v2 v3 ...]
- 将一个或多个值value插入到列表key的表头,注意顺序,往左边加入!!!
- key不存在,则创建key
> lpust list a b c d e f g 		//list的值一次为gfedcba(往左添加)
lrange key start stop
- 从开始位置读取key的值到stop结束
> lrange list 0 -1			//读取全部,从左到右
lset key index value
- 将key中index位置的值修改为value
lpop 移除   |   llen 长度   |  index 下标  |   
lpop key
- 移除并返回列表头元素数据,key不存在则返回nil
> lpop list 		//删除表头元素,可以多次执行
llen key
- 返回列表key的长度
lindex key index
- 返回列表中第index个值
rpush 插入   |   rpop 删除   |   往右边添加
rpush key value [v1 v2 v3 ...]
- 将value插入到key的末尾
> rpush list a b c d e 
rpop key
- 删除并返回key末尾的值

3.Hash表

Redis hash
- 是一个string类型的field和value的映射表
- 一个key可以对应多个field,一个field对应一个value
- 将一个对象存储为hash类型,较于每个字段都存储成string类型更能节省内存
hset 赋值 | hget 取值  |  hmset hmget 批量  | hkeys 返回所有field名称 |      |
hset key field value
- 将hash表中field值设置为value	
hget key field
- 获取hash表中field的值
hmet key field value [field value ...]
- 同时给hash表中的多个field赋值
> hmset site google baidu www.g.cn qq.com wx.qom
hmget key field [field...]
- 返回hash表中多个field的值
> hmget site google baidu
hkeys key
- 返回hash表中所有field名称
> hmset site google www.g.cn baidu wx.com
> hkeys site
|  hgetall 取值  |  hvals 返回所有field值  |   hdel 删除  |
hgetall key
- 返回hash表中所有field的值
hvals key
- 返回hash表中所有field的值
hdel key field [field...]
- 删除hash表中多个field的值,不存在则忽略
> hdel site google baidu

RDB与AOF

1.RDB相关介绍

Redis数据库文件,全称 Redis DataBase
– 数据持久化方式之一
– 数据持久化默认方式
– 按照指定时间间隔,将内存中的数据及快照写入硬盘
定义RDB文件名
– dbfilename “dump.rdb” //文件名

1.1 备份与恢复

备份数据
– 备份dump.rdb文件到其他位置

]# cp 数据库目录/dump.rdb 备份目录

恢复数据
– 拷贝备份文件到数据库目录,启动redis服务

]# cp 备份目录/dump.rdb 数据库目录/
1.2 优化设置

数据从内存保存到硬盘的频率
– save 900 1 //15分钟且有1个key改变即存盘
– save 300 10 //5分钟且有10个key改变即存盘
– save 60 10000 //1分钟且有10000个key改变即存盘
手动存盘
– save //阻塞写存盘,存盘时不可读取
– bgsave //不阻塞写存盘

2. AOF相关介绍

Append Only File
- 追加方式记录写操作的文件
- 记录redis服务所有写操作
- 不断的将新的操作,追加到文件的末尾
- 默认没有启用
- 使用cat命令可以查看文件内容
2.1 优缺点
AOF优点
-- 可以灵活设置持久化方式
-- 出现意外宕机时,尽可能丢失1秒的数据
AOF缺点
-- 持久化文件的体积通常会大于RDB方式
-- 执行fsync策略时的速度可能会比RDB方式慢
2.2 启用AOF
> config set appendonly yes			//启用
> config rewrite					//写进配置文件
2.3 AOF恢复数据

备份数据

  • 备份appendonly.aof文件到其他位置
]# cp 数据库目录/appendonly.aof 备份目录

恢复数据

  • 拷贝备份文件到数据库目录
  • 启动redis服务
]# cp 备份目录/appendonly.aof 数据库目录
]# /etc/redis/redis_端口 start
2.4 AOF优化配置
  • 定义文件名
    – appendonly yes //启用aof,默认no
    – appendfilename “appendonly.aof” //指定文件名
  • AOF文件记录写操作的方式
    – appendfsync always //时时记录,并完成磁盘同步
    – appendfsync everysec //每秒记录一次,并完成磁盘同步
    – appendfsync no //写入aof,不执行磁盘同步
  • 触发日志重写
    – auto-aof-rewrite-min-size 64mb //首次重写触发值
    – auto-aof-rewrite-percentage 100 //再次重写,增长百分比
  • 修复AOF文件
    – ]# redis-check-aof --fix appendonly.aof
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值