-
[综合] redis读书笔记四 EXPIRE
1、什么操作会影响expire设置的过期时间? 删除过期时间,只有替换了key对应的value,才会清除key对应的过期时间。如SET、DEL、GETSET命令会清除过期时间,而LPUSH,或INCR等命令不会影响过期时间。 使用RENAMEkeynewkey时,key的过期时间会转移到newkey...
97
热度 -
[综合] redis读书笔记五 redis 缓存清除策略
1、设置redis使用的最大缓存,只有设置了redis的最大缓存,当redis缓存达到设置值时才会执行设置的缓存清除策略。 可以在redis.conf文件中设置,也可以在redis运行过程中,使用CONFIGSET命令设置。 maxmemory100mb 2、redis的缓存清除策略 noevict...
76
热度 -
[综合] redis读书笔记六 事务
MULTI,EXEC,DISCARDandWATCH这几个命令是redis事务的基础。 1、这些命令可以保证事务中的一组命令的下面两个特点: 事务中的命令按输入的顺序执行。在事务执行过程中,其它的命令不能被执行。 要么所有的命令都不执行,要么所有的命令都执行。EXEC命令一旦执行,则事务中的所有命...
30
热度 -
[综合] redis读书笔记七 分区
1、为什么要分区? 分区可以把redis的数据保存在不同的redis实例上,可以使用多台机器的内存存储数据,同时可以利用多台机器的处理能力处理请求。 2、分区的几种算法? 根据key的范围分区。当key是数字时,我们可以把不同范围的key保存到不同的机器上。这种方式需要维护一张映射表,不推荐。 取...
69
热度 -
[综合] redis读书笔记八 分布式锁
1、单机架构下实现分布式锁 获取锁的命令 SETresource_namemy_random_valueNXPX30000 如果resource_name不存在,则客户端就能set成功,成功获取到锁,过期时间设置为30000ms。客户端处理完业务后,通过DEL命令删除resource_name,从而...
15
热度 -
[综合] redis读书笔记九 KeySpace通知
客户端可以订阅特定的PUB/SUB通道,当redis的dataset发生改变时,redis就会向这些通道发送通知。会发送通知的操作如下 影响key的命令 收到LPUSH命令的key 在database0过期的key redis的订阅功能不可靠,如果订阅了某个通道的客户端断开了连接,那么及时后面这...
75
热度 -
[综合] redis读书笔记十 数据类型
1、redis的数据类型 String Lists底层数据结构是linkedlists Sets不重复的String类型元素的集合 SortedSets和Sets类似,但是每个元素都绑定了一个score,用来排序 Hashes底层是一个map,包含了多个field和value对 Bitmaps这个...
41
热度 -
[综合] redis读书笔记十一 redis主从
1、保证redis主从实例,数据一致的机制 当客户端对master执行写操作,过期key操作或因为达到最大内存删除key等改变数据集的操作时,只要副本与master连接,master就向副本发送相应的数据修改命令。 当副本与master断开连接后,比如因为网络故障或重启等原因。当副本与master...
56
热度 -
[综合] redis读书笔记十二 持久化
1、redis的两种持久化方式 RDB这种持久化方式每隔一段时间,就把当前时间点的数据快照保存到一个.rdb文件中。 AOF每次实例接收到写命令时,就会把这条命令追加到AOF文件中。当AOF文件比较大时,redis可以新建一个文件继续写入。 可以同时开启AOF和RDB持久化,此时如果机器重启会使用...
42
热度 -
[综合] redis读书笔记十三 哨兵
1、哨兵机制概述 哨兵机制是redis官方的高可用方案,redis主从架构下,master挂掉的情况下,slave不能主动切换为master而是需要哨兵来完成切换过程。这个过程叫failover。 哨兵不止有主从切换的作用: Monitoring,监控redis实例的状态。 Notificatio...
96
热度 -
[综合] zookeeper读书笔记二 zookeeper环境搭建
1、启动单台zookeeper 创建conf/zoo.cfg文件,并如下配置 //单位ms,zookeeper的心跳时间,sessiontimeout这个时间的的2倍 tickTime=2000//持久化快照文件的保存目录,如果transactionlog保存的目录没有指定,也会保存在这个目录中...
80
热度 -
[综合] zookeeper读书笔记五 zookeeper数据模型
1、每个znode都包含一个statstructure,这个statstructure包含data和acl的版本信息,每次数据或acl变更,版本都会增加,statstructure还包含一个时间戳。客户端取数据的时候会同时获得这些版本信息,update或delete的时候必须带上版本信息,如果版本信...
52
热度 -
[综合] zookeeper读书笔记六 客户端连接zookeeper集群
配置集群中的zookeeper机器,格式逗号分隔的host:port,如"127.0.0.1:4545"或者"127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"。还可以在端口后面加上一个自定义的path,例如"127.0.0.1:4545/app/a"or"1...
100
热度 -
[综合] zookeeper读书笔记七 watch
可以设置watch的操作 getData() getChildren() exists() watchevent的类型 Createdevent:发送到exists()设置的watch Deletedevent:发送到exists()、getChildren()、getData()设置的wat...
119
热度 -
[综合] zookeeper读书笔记八 ACL
ACL是什么 zookeeper使用AccessControlList(ACL)来控制client对znode的操作权限。ACL的格式为(scheme:expression,permmission),每个znode可以有多个ACL。其中scheme表示zookeeper校验client身份的方式,...
37
热度 -
[综合] zookeeper读书笔记九 zookeeper优化
单独设置transactionlog的存放位置,不要和zookeeper的持久化数据放到同一块硬盘上。因为zookeeper所有的更新操作,都会先保存好transactionlog才会响应。 正确设置java虚拟机的堆内存,避免发生swapping。因为zookeeper中所有的操作都是顺序的,一旦...
12
热度 -
[综合] zookeeper读书笔记十 zookeeper实现分布式屏障Barriers
Barriers解决什么问题? 当有些操作需要所有参与者全部准备好之后才能开始执行,并且对每个参与者来说必须等待所有参与者全部执行完毕,才算执行完毕。于是就需要一个屏障,来控制所有参与者同时开始,并等待所有参与者全部结束。 实现barriers需要注意的问题 1.如何控制所有线程同时开始? ...
92
热度 -
[综合] zookeeper读书笔记十三 zookeeper应用之实现两段提交
2PC 2PC,二阶段提交协议,即将事务的提交过程分为两个阶段来进行处理:准备阶段和提交阶段。事务的发起者称协调者,事务的执行者称参与者。 第一阶段:提交事务阶段(投票阶段) 事务询问:协调者会询问所有的参与者结点,是否可以执行提交操作,并等待响应。执行事务:各个参与者执行事务操作,并将Undo和R...
35
热度 -
[综合] zookeeper读书笔记十四 zookeeper应用之实现leader选举
Zookeeperleader选举 让我们分析如何在ZooKeeper集合中选举leader节点。考虑一个集群中有N个节点。leader选举的过程如下: 所有节点创建具有相同路径/app/leader_election/guid_的顺序、临时节点。 ZooKeeper集合将附加10位序列号到路...
80
热度 -
[综合] spring cloud读书笔记一 spring cloud配置文件
springcloud配置文件优先级解析 springcloud项目的很多功能功能建立在springboot基础之上,启动一个springcloud项目,首先会初始化一个bootstrapapplicationContext,然后会再初始化项目的mainapplicationContext,而mai...
78
热度