Redis的特殊数据类型和主从复制,事务

一.特殊数据类型Geospatial

主要引用于 “附近的人”,可以存地理位置,添加:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
获取两地的距离(如图是获取北京到上海的距离):
在这里插入图片描述
可以看到更多命令的网站:https://www.redis.net.cn/order/

以一个纬度,经度为中心,在规定半径范围内寻找:
在这里插入图片描述
在这里插入图片描述
以一个存入的地名为中心,规定半径范围内查找:
在这里插入图片描述
因为geospatial的底层用的就是Zset,所以在查找所有元素的命令,跟Zset是一样的。
在这里插入图片描述

二.特殊数据类型Hyperloglog

这个特殊基本类型主要是用在取两者的并集。
在这里插入图片描述

三.特殊数据类型Bitmap

运用 场景,打卡,录取一周的打卡记录,1为打卡,0为未打卡。
在这里插入图片描述

四.Redis的事务

Redis的事务本质是 一组命令的集合,一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行。
具有一次性顺序性排他性的特点,Redis的事务没有隔离级别的概念。
所有的命令在压入事务中,并不会执行,而是执行了exec命令后,才会一起执行。

Redis的单条命令是具有原子性的,但是Redis的事务不具有原子性。

在这里插入图片描述
在这里插入图片描述
Discard命令是取消事务,压入事务中的 操作都不会执行。

在这里插入图片描述
Redis的事务可以对比一下Java的编译期和运行期,在编译期间出错,会导致整个事务失败,在运行期间出错,只有出错的命令失败。
编译期错误:
在这里插入图片描述
运行期错误:
在这里插入图片描述
watch 上锁。若事务未执行完,数据发生改变,则放弃事务。
在这里插入图片描述
unwatch是解锁
在这里插入图片描述
关于Redis设置密码:
配置文件里面搜索 /requirepass
去除前面的#即可。
在这里插入图片描述
每次登陆是 使用auth+密码登录在这里插入图片描述
在这里插入图片描述

五.Redis的持久化

Redis的持久化分为RDB和AOF两种,前者是Redis的默认持久化方式。
1.RDB(Redis DataBase)
在配置文件中,有这样的规则,这是快照,意思分别是,900s内操作了一次就保存,300s内操作了10次就保存,一分钟内操作10000次就保存。
在这里插入图片描述
Redis是内存数据库,如果没有持久化,那么数据将是断电即失的。
rdb的默认位置是跟配置文件一个目录里。名字就叫dump.rdb
在这里插入图片描述
RDB的工作流程:
在这里插入图片描述
触发机制:
在这里插入图片描述
在这里插入图片描述
2.AOF(Append only File)
默认是不开启的,我们需要去配置文件手动设置。
在这里插入图片描述
重启Redis就可以生效了。
AOF是将所有的写操作都记录下来,然后下次进入Redis的时候,会将记录的写操作都执行一遍,在高并发的情况下这是非常耗时间的。
在这里插入图片描述
当Aof的持久化文件有错误的时候,Redis是无法启动的,所以Redis有一个自带的修复工具
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六.Redis的发布订阅

很简单,就两个命令 subscribe 订阅号public 订阅号 内容
在这里插入图片描述
往jr这个订阅号发送了一个Hello。
在这里插入图片描述
在这里插入图片描述

七.Redis的主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点
(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。
Master以写为主,Slave 以读为主。
在这里插入图片描述
在这里插入图片描述
简单搭建一个Redis集群
.将配置文件 redis.conf 多复制几份
在这里插入图片描述
在这里插入图片描述
修改每个配置文件中的相应的数据。
1.端口:
在这里插入图片描述
2.pid文件:
在这里插入图片描述
3.日志文件的名字:
在这里插入图片描述
4.持久化文件的名字:
在这里插入图片描述

二.启动三个配置文件的Redis
在这里插入图片描述
Redis单机情况下默认都是主机。
所以只需要配置从机就可以了。

使用 slaveof host port 就是认谁做主机。如图就是认 端口号为 6379的作为主机,
在这里插入图片描述
可以使用 info replication 来查看当前机器是从机还是主机。
在这里插入图片描述
在这里插入图片描述
从配置文件 认谁做主机:
在这里插入图片描述
在这里插入图片描述
我这里是以81为主机进行操作:
在这里插入图片描述
两个从机都无法进行写操作但是可以获得主机写的数据:
在这里插入图片描述
在这里插入图片描述
当主机宕机时,从机可以使用 slave no one进行谋朝篡位当主机。

主机宕机:
在这里插入图片描述
6379进行篡位变为主机:
在这里插入图片描述
其他的从机就要重新选择主机,80选择79当主机:
在这里插入图片描述
当初的主机回来也只能重新选择当从机或者主机(我这里选择当从机):
在这里插入图片描述
此时的79就有了两个从机。
在这里插入图片描述
但是这种手动设置的方式太过麻烦,所以就有了哨兵模式

哨兵模式
自选老大模式,弄一个哨兵监视着服务器,隔一段时间发消息,如果服务器没有回应,则认为是服务器宕机,就会重新投票(随机)选取一个主机。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建哨兵模式:

在原来放redis.conf的地方创建一个 sentinel.conf
在这里插入图片描述
并在配置文件中写入
在这里插入图片描述

启动哨兵:
在这里插入图片描述
如果主机宕机,哨兵模式会在一定时间之后再从从机中选取一个作为主机,宕机的主机回来以后,只能回归于新的主机之下当从机。

在这里插入图片描述
本博客图摘自 B站狂神说Java

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值