redis

 

目录

1. 安装,修改配置

 2. redis5大基本类型

2.1 key

2.2 String

2.3 list

2.4  set

2.5 hash

2.6 zset

​ 3 redis的持久化

3.1 RDB

3.1.1 RDB是什么

3.1.2 fork

3.1.3 存储

3.1.4 触发dump.rbd的方式:

3.1.5 优点和缺点

3.2 AOF        

3.2.1 AOF是什么

3.2.2 aof恢复

3.2.3 ReWrite

3.2.4 aof的优点和缺点

4. redis的事务

4.1 开启事务

4.2 执行

4.3 退出事务

4.4 失败情况

4.5 watch 监视器

 5. 消息订阅和发布(了解)

 6. redis主从复制

6.1 作用:

6.2 一主二从

6.3 薪火相传

6.4 反客为主

6.5 哨兵模式

6.5.1 开启条件

6.5.2 启动哨兵

7. 集群

 7.1 开启集群

7.1.1 配置文件

7.1.2 启动集群

7.2 连接集群

7.3 slot插槽

 8. redis可能会出现的问题

8.1 缓存穿透

8.2 缓存击穿

8.3 缓存雪崩


1. 安装,修改配置

解压缩之后在redis目录中运行make命令

在redis.conf中修改配置,让redis可以后台运行

 安装成功后默认在/usr/local/bin目录下

用这个config开启

链接redis

测试连接成功

关闭redis

 2. redis5大基本类型

2.1 key

查看key是否存在

把key移动到其他库

 设置过期时间

 查看key的类型

2.2 String

在后面追加

 显示key的值得长度

自增

自减

一次增加某个数

截取字符串

创建时设置过期时间

如果没有就创建

设置多个键值对

获取多个值

设置值得同时判断有没有该值并且设置过期时间

2.3 list

左插入,右插入,取值

删除元素

2.4  set

增加数据(不重复) 查询数据

查看数据个数  删除某个数据

再原有的数据池中随机几个数据

随机出栈

把k1中的某个数移动到k2

2.5 hash

存值和取值

多值存取和显示所有

获取所有的key

获取所有的value

 2.6 zset

创建 score后面跟着value

 获取

3 redis的持久化

当两者共存时redis先找aof

3.1 RDB

3.1.1 RDB是什么

每间隔一定的时间将内存中的数据集快照进磁盘

记录了最后的状态

redis会单独创建(fork)一个子进程来进行持久化,会将数据先写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换掉上次持久化好的文件。

整个过程中,主进程不进行任何IO操作,这就保证了RDB的性能,所以RDB比AOF更加高效。在对数据的完整性要求不高的时候,可以选择RDB,但是可能会导致最后一次持久化后数据丢失

3.1.2 fork

复制一个与当前进程完全一样的进程,保有所有的数据

3.1.3 存储

 3600秒内有一次改动则进行RDB

300秒内有100次改动则进行rdb

...

3.1.4 触发dump.rbd的方式:

1. flushall

2. exit

3. save

4. 达到配置文件的要求

3.1.5 优点和缺点

优点:1. 适合大规模的数据恢复

           2.对数据完整性和一致性要求不高

缺点: 1. redis意外down时会丢失最后一次快照后的所有修改

            2. fork的时候,内存中的数据被克隆了一份,2倍的膨胀性需要考虑

3.2 AOF        

打开AOF设置为yes

3.2.1 AOF是什么

aof以日志的方式记录了所有的写操作,只允许追加不可以改写文件

aof会将flushdb也会记录下来

3.2.2 aof恢复

aof文件损坏(认为,突然故障)redis无法启动

redis-check-aof  --fix -aof文件

修复aof文件

3.2.3 ReWrite

aof采用追加的形式,会导致文件越来越大ReWrite解决了这个问题,新增文件重写机制。

redis会记录上一次重写时AOF的大小,默认配置是AOF文件是上次ReWrite后大小一倍且文件大小大于64M时触发

3.2.4 aof的优点和缺点

优点:可以设置每秒同步,每次同步和永不同步

          在默认状态下,只会丢失1秒的数据

缺点:相同数据的情况下,AOF的文件会远远大于RDB的文件,恢复速度也会慢于RDB

           运行效率慢于RDB

4. redis的事务

4.1 开启事务

4.2 执行

 4.3 退出事务

所有命令都不执行

4.4 失败情况

1. 一个错误全体失败

 2. 不是命令出错,那么其他正常都可以启动

 4.5 watch 监视器

先监视再加事务  同时成功,同时失败

 在监视时,被监视的数据进行修改,则会导致事务失败(乐观锁,CAS操作)

unwatch取消监视,但是set的值仍然会被修改

 5. 消息订阅和发布(了解)

 发布者(pub)订阅者(sub)

 

 6. redis主从复制

 6.1 作用:

1. 读写分离 (主机写,从机读)

2. 容灾恢复

6.2 一主二从

创建3台redis

查看集群命令

 6380变成了6379的从机

 从机无法写入数据

不加入哨兵主机宕机从机不会上位,主机修复会保持原样

从机宕机重新链接之后会变成master,变成从机需要slaveof命令

6.3 薪火相传

master的slaveof可以是下一个slaveof的msater,这样就可以减轻master的负担,去中心化

中间的从机仍然是从机即便是有从机把他当做主机

6.4 反客为主

当主机宕机之后,从机变成主机,需要手动配置

slaveof no one 命令可以使从机变成主机

此时宕机的主机回复之后单独成一套体系,下面不会有任何从机

6.5 哨兵模式

6.5.1 开启条件:

创建一个sentinel.conf的文件,文件里面配上

sentinel monitor 主机名(随便写) ip地址 端口号 数字(投票数高于这个数字直接变成主机)

 6.5.2 启动哨兵

redis-sentinel sentinel.conf

主机宕机后,重新启动会变成从机

7. 集群

一个集群至少有3个主节点

去中心化,任何一台服务器都可以作为集群入口,如果此服务器无法处理,会转给下一台服务器处理

 7.1 开启集群

7.1.1 配置文件

cluster-enabled yes # 打开集群模式

cluster-config-file nodes-6379.conf # 设置节点配置文件名

cluster-node-timeout 15000 # 设置节点失联时间,超过改时间(毫秒),集群自动进行主从切换

7.1.2 启动集群

redis全部启动,之后进入到redis目录下的src中(不是/usr/local/bin),使用redis-cli命令打开集群

-replicas 1 以最简单的方式配置集群 一主一从

redis-cli --cluster create --cluster-replicas 1 redisip地址 端口 redisip地址 端口......

7.2 连接集群

redis目录下的src中(不是/usr/local/bin)

redis-cli -c(以集群的方式启动) -p 6379(集群中任何一个端口都能连接)

 cluster nodes查看集群信息

7.3 slot插槽

向集群插入数据时,redis会根据自身算法得出一个值,然后根据每个redis接收的slot分配到具体的redis中

 计算出插槽的值是12706  在6381的接受范围内,存储到6381

集群无法一次插入多个数据,如插入多个数据,需要设置组

 8. redis可能会出现的问题

8.1 缓存穿透

大量请求来查询,redis中查不到数据,导致数据库压力剧增,最终崩溃(redis没事,数据库崩了)

解决方法:

1. 对空值做缓存,并且设置空值的过期时间(1分钟)

2. 布隆过滤器

8.2 缓存击穿

redis中某个热点数据过期,大量请求访问了这个热点数据,reids查询不到了,就去查数据库,数据库承受不住崩溃

解决办法:

1.预先设置热门数据,加大时长

2.使用锁  查询不到时加锁,休眠一段时间,再次尝试,直到成功为止

8.3 缓存雪崩

在极短的时间内,大量的key过期,大量的数据进行访问,数据库,redis,服务器全都崩溃

解决办法:

1. 多级缓存

2. key的过期时间不同时过期

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值