一.特殊数据类型Geospatial

主要引用于 “附近的人”,可以存地理位置,添加:

redis 设置复制缓存区_java


redis 设置复制缓存区_redis_02


redis 设置复制缓存区_linux_03


获取两地的距离(如图是获取北京到上海的距离):

redis 设置复制缓存区_java_04


可以看到更多命令的网站:https://www.redis.net.cn/order/以一个纬度,经度为中心,在规定半径范围内寻找:

redis 设置复制缓存区_java_05


redis 设置复制缓存区_redis 设置复制缓存区_06


以一个存入的地名为中心,规定半径范围内查找:

redis 设置复制缓存区_redis_07


因为geospatial的底层用的就是Zset,所以在查找所有元素的命令,跟Zset是一样的。

redis 设置复制缓存区_redis_08

二.特殊数据类型Hyperloglog

这个特殊基本类型主要是用在取两者的并集。

redis 设置复制缓存区_redis_09

三.特殊数据类型Bitmap

运用 场景,打卡,录取一周的打卡记录,1为打卡,0为未打卡。

redis 设置复制缓存区_java_10

四.Redis的事务

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

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

redis 设置复制缓存区_java_11


redis 设置复制缓存区_linux_12


Discard命令是取消事务,压入事务中的 操作都不会执行。

redis 设置复制缓存区_linux_13


Redis的事务可以对比一下Java的编译期和运行期,在编译期间出错,会导致整个事务失败,在运行期间出错,只有出错的命令失败。

编译期错误:

redis 设置复制缓存区_java_14


运行期错误:

redis 设置复制缓存区_java_15


watch 上锁。若事务未执行完,数据发生改变,则放弃事务。

redis 设置复制缓存区_redis 设置复制缓存区_16


unwatch是解锁

redis 设置复制缓存区_redis_17


关于Redis设置密码:

配置文件里面搜索 /requirepass

去除前面的#即可。

redis 设置复制缓存区_linux_18


每次登陆是 使用auth+密码登录

redis 设置复制缓存区_linux_19


redis 设置复制缓存区_redis 设置复制缓存区_20

五.Redis的持久化

Redis的持久化分为RDB和AOF两种,前者是Redis的默认持久化方式。

1.RDB(Redis DataBase)

在配置文件中,有这样的规则,这是快照,意思分别是,900s内操作了一次就保存,300s内操作了10次就保存,一分钟内操作10000次就保存。

redis 设置复制缓存区_java_21


Redis是内存数据库,如果没有持久化,那么数据将是断电即失的。

rdb的默认位置是跟配置文件一个目录里。名字就叫dump.rdb

redis 设置复制缓存区_redis 设置复制缓存区_22


RDB的工作流程:

redis 设置复制缓存区_java_23


触发机制:

redis 设置复制缓存区_redis 设置复制缓存区_24


redis 设置复制缓存区_linux_25


2.AOF(Append only File)

默认是不开启的,我们需要去配置文件手动设置。

redis 设置复制缓存区_linux_26


重启Redis就可以生效了。

AOF是将所有的写操作都记录下来,然后下次进入Redis的时候,会将记录的写操作都执行一遍,在高并发的情况下这是非常耗时间的。

redis 设置复制缓存区_java_27


当Aof的持久化文件有错误的时候,Redis是无法启动的,所以Redis有一个自带的修复工具

redis 设置复制缓存区_redis 设置复制缓存区_28


redis 设置复制缓存区_linux_29


redis 设置复制缓存区_linux_30

六.Redis的发布订阅

很简单,就两个命令 subscribe 订阅号public 订阅号 内容

redis 设置复制缓存区_redis 设置复制缓存区_31


往jr这个订阅号发送了一个Hello。

redis 设置复制缓存区_redis_32


redis 设置复制缓存区_java_33

七.Redis的主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点

(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。

Master以写为主,Slave 以读为主。

redis 设置复制缓存区_分布式_34


redis 设置复制缓存区_java_35


简单搭建一个Redis集群

一 .将配置文件 redis.conf 多复制几份

redis 设置复制缓存区_分布式_36


redis 设置复制缓存区_linux_37


修改每个配置文件中的相应的数据。

1.端口:

redis 设置复制缓存区_java_38


2.pid文件:

redis 设置复制缓存区_redis_39


3.日志文件的名字:

redis 设置复制缓存区_redis 设置复制缓存区_40


4.持久化文件的名字:

redis 设置复制缓存区_分布式_41

二.启动三个配置文件的Redis

redis 设置复制缓存区_linux_42


Redis单机情况下默认都是主机。

所以只需要配置从机就可以了。使用 slaveof host port 就是认谁做主机。如图就是认 端口号为 6379的作为主机,

redis 设置复制缓存区_redis 设置复制缓存区_43


可以使用 info replication 来查看当前机器是从机还是主机。

redis 设置复制缓存区_分布式_44


redis 设置复制缓存区_redis 设置复制缓存区_45


从配置文件 认谁做主机:

redis 设置复制缓存区_linux_46


redis 设置复制缓存区_分布式_47


我这里是以81为主机进行操作:

redis 设置复制缓存区_linux_48


两个从机都无法进行写操作但是可以获得主机写的数据:

redis 设置复制缓存区_redis_49


redis 设置复制缓存区_分布式_50


当主机宕机时,从机可以使用 slave no one进行谋朝篡位当主机。主机宕机:

redis 设置复制缓存区_分布式_51


6379进行篡位变为主机:

redis 设置复制缓存区_linux_52


其他的从机就要重新选择主机,80选择79当主机:

redis 设置复制缓存区_java_53


当初的主机回来也只能重新选择当从机或者主机(我这里选择当从机):

redis 设置复制缓存区_redis_54


此时的79就有了两个从机。

redis 设置复制缓存区_linux_55


但是这种手动设置的方式太过麻烦,所以就有了哨兵模式哨兵模式

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

redis 设置复制缓存区_分布式_56


redis 设置复制缓存区_redis 设置复制缓存区_57


redis 设置复制缓存区_分布式_58


创建哨兵模式:在原来放redis.conf的地方创建一个 sentinel.conf

redis 设置复制缓存区_java_59


并在配置文件中写入

redis 设置复制缓存区_redis_60

启动哨兵:

redis 设置复制缓存区_redis_61


如果主机宕机,哨兵模式会在一定时间之后再从从机中选取一个作为主机,宕机的主机回来以后,只能回归于新的主机之下当从机。

redis 设置复制缓存区_分布式_62