Redis系列—知识点概述

1、redis高可用

  • redis主从复制
  • redis持久化
  • 哨兵机制(监听):
    监听所有服务器状态(主、从)
    投票选举新主节点
  • keepalived监听:
    监听所有服务器状态(主、从)
    重启脚本
    宕机自动重启(多次重启失败时发送通知)

2、主从复制实现

不需要配置主服务器

配置从服务器:
	slaveof 主ip port
	masterauth link link

登录客户端:
	redis-server  /etc/redis/redis.conf 
	redis-cli -h 127.0.0.1 -p 6379 -a link
	info 可查看到从节点信息

从服务器不能写只能读

集群的搭建:
	多加入多台从服务器

3、哨兵机制

哨兵配置:
	sentinel.conf:
		sentinel monitor mymaster 主ip  port 投票策略
		sentinel auth-pass mymaster 密码
	检测主节点:
		sentinel down-after-milliseconds mymaster 1000
	从节点个数:
		sentinel parallel-syncs mymaster 2

启动哨兵:
	redis-server /sentinel.conf --sentinel &

宕机测试:
	进入主节点:shutdown
	可以看到从节点重新选出主节点

4、redis持久化

默认:
	dbfilename dump.rdb

1、RDB持久化

二进制存储
不是实时存储
文件较小

默认开启

持久化策略:单位s
save 900  1
save 300  10
save 60  10000
900s内保存一个key做一次持久化
300s内保存10个做一次持久化

2、AOF 持久化

实时存储
以日志文件储存
文件较大

开启aof:
	appendonly yes

日志文件末尾累加

5、redis事务机制

multi:开启事务

操作

exec:提交事务

6、redis发布订阅

发布频道(生产者)
|
创建频道
|	
关注频道(订阅频道)

7、redis汇总

redis实现分布式锁

缓存雪崩
缓存击穿

8、Redis

1、多路I/O复用模型
2、模糊key查询SCAN 
3、分布式锁
	Redis2.6.12
	SET KEY value [EX seconds] [PX milliseconds] [NX|XX]
4、持久化RDB\AOF
5、Pineline批量执行指令
6、同步机制
	主从同步原理:不自动设置主节点,不提供写入
	Sentinel(哨兵)
	Redis集群(分片)

9、redis持久化

9.1、RDB:在指定的时间间隔能对你的数据进行快照存储:
# 时间策略:900s内如果有1条是写入命令,触发产生一次快照
save 900 1
save 300 10
save 60 10000
# 文件名称
dbfilename dump.rdb
# 文件保存路径
dir /home/work/app/redis/data/
# 如果持久化出错,主进程是否停止写入
stop-writes-on-bgsave-error yes
# 是否压缩
rdbcompression yes
# 导入时是否检查
rdbchecksum yes
9.2、AOF:记录每次对服务器写的操作,当服务器重启的时候

会重新执行这些命令来恢复原始的数据。

# 是否开启aof
appendonly yes
# 文件名称
appendfilename "appendonly.aof"
# 同步方式
appendfsync everysec
# aof重写期间是否同步
no-appendfsync-on-rewrite no
# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 加载aof时如果有错如何处理
aof-load-truncated yes
# 文件重写策略
aof-rewrite-incremental-fsync yes
  • 三种模式
always:把每个写命令都立即同步到aof,很慢,但是很安全
everysec:每秒同步一次,是折中方案
no:redis不处理交给OS来处理,非常快,但是也最不安全

10、linux安装redis

安装make:
	yum -y install gcc automake autoconf libtool make
	yum install gcc gcc-c++

安装:
	tar xzf redis-4.0.6.tar.gz
	cd redis-4.0.6
	make
	cd src/
	make install
	mkdir /etc/redis
	cp redis.conf /etc/redis/

	redis-server 
	redis-cli

 配置后台运行:
 	vim /etc/redis/redis.conf
 	找到daemonize no 改为daemonize yes
 	redis-server  /etc/redis/redis.conf 
 配置:
 	库的个数
 	持久化方式
 	密码

11、redis实现分布式锁

分布式锁的实现,还是有很多的,有数据库方式的,
有redis分布式锁,有zookeeper分布式锁等等

通过key不能重复实现

Striing key = "ID_Generate_KEY"

// 返回一个1,那就代表了成功
// 返回0,那就代表失败了
setnx key value

// 如果其他操作再去set同样的key会返回0,操作失败
// 释放锁之后,其他操作才能进行
delete key

  • 可能会有死锁的问题发生

比如服务器1设置完之后,获取了锁之后,忽然发生了宕机。那后续的删除key操作就没法执行,这个key会一直在redis中存在,其他服务器每次去检查,都会返回0,他们都会认为有人在使用锁,我需要等

  • 解决方法给key 设置有效期

1,第一种就是在set完key之后,直接设置key的有效期 “expire key timeout” ,为key设置一个超时时间,单位为second,超过这个时间锁会自动释放,避免死锁。
这种方式相当于,把锁持有的有效期,交给了redis去控制。如果时间到了,你还没有给我删除key,那redis就直接给你删了,其他服务器就可以继续去setnx获取锁。
2,第二种方式,就是把删除key权利交给其他的服务器,那这个时候就需要用到value值了,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值