Levon's Blog

微信: L6241425

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 语言则采用一种特别的 逻辑体系——三值逻辑,即逻辑真值除了真和假,还有第三个值“不确定”。三值逻辑经常会带来一些意想不到的情况,这让程序员很是烦恼。

阅读全文 »

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

  • 智能分屏(split):虽然 iTerm2 也提供了横向和竖向分屏功能,但 iTerm2 的分屏相对独立——新开的 pane 是全新的会话,不会自动进入当前目录,也不会继承当前的 SSH 连接状态。这意味着如果你通过 SSH 连接到远程服务器,在 iTerm2 中新开 pane 时,需要重新执行 SSH 登录流程。而 tmux 的分屏功能则更加智能:在 tmux 中新开的 pane 会自动继承当前的工作目录,如果是在远程服务器上运行 tmux,所有的 pane 都在同一个 SSH 会话中,无需重复登录。这种设计让工作流程更加顺畅高效。
  • 会话保持(attach/detach):tmux 最强大的功能之一是会话管理。即使关闭终端窗口,tmux 会话仍在后台运行,你可以随时重新连接(attach)到之前的会话,所有的窗口、pane 和正在运行的程序都保持原样。这对于 SSH 远程工作尤其重要:
    • 网络中断不会影响正在运行的任务
    • 可以安全地断开连接,任务继续在服务器后台执行
    • 支持多地办公,在任何地方都能接续之前的工作状态
    • 长时间运行的任务(如模型训练、数据处理)可以放心执行,无需担心连接中断

这些特性使 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这样的请求

阅读全文 »
0%