0%

1. 过期删除策略

1.1 过期删除策略(3种)

  • 定时删除(对内存友好,对CPU不友好)

    到时间点上就把所有过期的键删除了。

  • 惰性删除(对CPU极度友好,对内存极度不友好)

    每次从键空间取键的时候,判断一下该键是否过期了,如果过期了就删除。

  • 定期删除(折中)

    每隔一段时间去删除过期键,限制删除的执行时长和频率。

第一种和第三种为主动删除策略,而第二种则为被动删除策略。Redis采用的是惰性删除+定期删除两种策略,所以说,在Redis里边如果过期键到了过期的时间了,未必被立马删除的!

阅读全文 »

1. 基础对象

Redis中的key一定是字符串,value可以是string、list、hash、set、sortset这几种常用的。

类型作用底层数据结构
string简单的key-valueSDS
list有序列表,可做简单队列ziplist, linkedlist 【quicklist】
hash哈希表,存储结构化数据ziplist, hashtable
set无序列表(去重),提供一系列的交集、并集、差集的命令intset, hashtable
sortset有序集合映射,排行榜,和时间相关的排序ziplist, zskiplist
阅读全文 »

1. http basic认证

HttpBasic认证是Http自带的认证方式,这种认证方式通常表现为浏览器弹出Alert窗口提示输入用户名/密码。

阅读全文 »

大多数编程语言都是基于二值逻辑的,即逻辑真值只有真和假两个。而 SQL 语言则采用一种特别的 逻辑体系——三值逻辑,即逻辑真值除了真和假,还有第三个值“不确定”。三值逻辑经常会带来一些意想不到的情况,这让程序员很是烦恼。

阅读全文 »

1. quick start

1
2
3
4
5
6
7
8
9
10
11
12
package main

import (
"log"
"net/http"
_ "net/http/pprof"
)

func main() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}

阅读全文 »

tmux是一款优秀的终端复用软件,它比Screen更加强大。 tmux之所以受人们喜爱,主要得益于以下功能:

  • 丝滑分屏(split),虽然iTem2也提供了横向和竖向分屏功能,但这种分屏功能非常拙劣,完全等同于屏幕新开一个窗口,新开的pane不会自动进入到当前目录,也没有记住当前登录状态。这意味着如果我ssh进入到远程服务器时,iTem2新开的pane中,我依然要重新走一遍ssh登录的老路(omg)。tmux就不会这样,tmux窗口中,新开的pane,默认进入到之前的路径,如果是ssh连接,登录状态也依旧保持着,如此一来,我就可以随意的增删pane,这种灵活性,好处不言而喻。

  • 保护现场(attach),即使命令行的工作只进行到一半,关闭终端后还可以重新进入到操作现场,继续工作。对于ssh远程连接而言,即使网络不稳定也没有关系,掉线后重新连接,可以直奔现场,之前运行中的任务,依旧在跑,就好像从来没有离开过一样;特别是在远程服务器上运行耗时的任务,tmux可以帮你一直保持住会话。如此一来,你就可以随时随地放心地进行移动办公,只要你附近的计算机装有tmux(没有你也可以花几分钟装一个),你就能继续刚才的工作。

阅读全文 »

1. 从0到100万用户的扩展

1.1 考虑因素

  • 因此对于大型应用来说,采用横向扩展更合适一些
  • 采用负载均衡器(nginx, k8s, istio等)
  • 数据库主从复制,数据库扩展
  • 使用缓存,CDN
  • 让网络层无状态,方便扩展
  • 多数据中心
  • 使用消息队列
  • 记录日志、收集指标与自动化
46549_33_2
阅读全文 »

1. 有无 / 结尾

在location中匹配的url最后有无/结尾,指的是模糊匹配与精确匹配的问题
在proxy_pass中代理的url最后有无/结尾,指的是在proxy_pass 指定的url后要不要加上location匹配的url的问题

1.1 localtion 加不加 /

  • location /abc/def

    可以匹配/abc/defghi的请求,也可以匹配/abc/def/ghi ……

  • location /abc/def/

    不能匹配/abc/defghi的请求,只能精确匹配 /abc/def/ghi这样的请求

阅读全文 »