From 7bb49d65523013ce7ef0a2eb890e0bf7b3e99317 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Mon, 2 Apr 2018 14:11:11 +0800 Subject: [PATCH] auto commit --- notes/MySQL.md | 2 ++ notes/Redis.md | 16 +++++++++++++--- pics/bee1ff1d-c80f-4b3c-b58c-7073a8896ab2.jpg | Bin 0 -> 39936 bytes 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 pics/bee1ff1d-c80f-4b3c-b58c-7073a8896ab2.jpg diff --git a/notes/MySQL.md b/notes/MySQL.md index 2e9510d5..99fc6797 100644 --- a/notes/MySQL.md +++ b/notes/MySQL.md @@ -332,6 +332,7 @@ do { # 五、切分 + 随着时间和业务的发展,数据库中的表会越来越多,并且表中的数据量也会越来越大,那么读写操作的开销也会随着增大。 ## 垂直切分 @@ -362,6 +363,7 @@ do { 最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算。 + # 六、故障转移和故障恢复 故障转移也叫做切换,当主库出现故障时就切换到备库,使备库成为主库。故障恢复顾名思义就是从故障中恢复过来,并且保证数据的正确性。 diff --git a/notes/Redis.md b/notes/Redis.md index 9e5bfa61..08b1f54f 100644 --- a/notes/Redis.md +++ b/notes/Redis.md @@ -212,7 +212,14 @@ Redis 可以为每个键设置过期时间,当键过期时,会自动删除 # 四、发布与订阅 -发布与订阅实际上是观察者模式,订阅者订阅了频道之后,发布者向频道发送字符串消息会被所有订阅者接收到。 +订阅者订阅了频道之后,发布者向频道发送字符串消息会被所有订阅者接收到。 + +发布与订阅模式和观察者模式有以下不同: + +- 观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,发布者与订阅者不知道对方的存在,它们之间通过频道进行通信。 +- 观察者模式是同步的,当事件触发时,主题会去调度观察者的方法;而发布与订阅模式是异步的; + +

发布与订阅有一些问题,很少使用它,而是使用替代的解决方案。问题如下: @@ -241,7 +248,7 @@ Redis 是内存型数据库,为了保证数据在断电后不会丢失,需 ## 2. AOF 持久化 -AOF 持久化将写命令添加到 AOF 文件(Append Only File)的末尾。 +将写命令添加到 AOF 文件(Append Only File)的末尾。 对硬盘的文件进行写入时,写入的内容首先会被存储到缓冲区,然后由操作系统决定什么时候将该内容同步到硬盘,用户可以调用 file.flush() 方法请求操作系统尽快将缓冲区存储的数据同步到硬盘。 @@ -365,7 +372,7 @@ def main(): 从事件处理的角度来看,服务器运行流程如下: -

+

# 十一、Redis 与 Memcached 的区别 @@ -424,6 +431,8 @@ Redis 这种内存数据库能支持计数器频繁的读写操作。 如果使用 Redis 来缓存数据时,要保证所有数据都是热点数据,可以将内存最大使用量设置为热点数据占用的内存量,然后启用 allkeys-lru 淘汰策略,将最近最少使用的数据淘汰。 +作为内存数据库,出于对性能和内存消耗的考虑,Redis 的淘汰算法(LRU、TTL)实际实现上并非针对所有 key,而是抽样一小部分 key 从中选出被淘汰 key。抽样数量可通过 maxmemory-samples 配置。 + # 十四、一个简单的论坛系统分析 该论坛系统功能如下: @@ -462,3 +471,4 @@ Redis 没有关系型数据库中的表这一概念来将同类型的数据存 - [论述 Redis 和 Memcached 的差异](http://www.cnblogs.com/loveincode/p/7411911.html) - [Redis 3.0 中文版- 分片](http://wiki.jikexueyuan.com/project/redis-guide) - [Redis 应用场景](http://www.scienjus.com/redis-use-case/) +- [Observer vs Pub-Sub](http://developers-club.com/posts/270339/) diff --git a/pics/bee1ff1d-c80f-4b3c-b58c-7073a8896ab2.jpg b/pics/bee1ff1d-c80f-4b3c-b58c-7073a8896ab2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4becc1995898de3b556e84a737f9da7f70fac8b GIT binary patch literal 39936 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 Lr>6fePw4*x8#D(R literal 0 HcmV?d00001