《用Gin框架构建分布式应用》学习第8天,p108-p126总结,总计18页。

一、技术总结

1.Redis eviction policy

(1)什么是 eviction policy?

The eviction policy determines what happens when a database reaches its memory limit.

(2)配置示例

在redis.conf中配置。

maxmemory-policy allkeys-lru

maxmemory 512mb

(3)参考资料

https://redis.io/docs/latest/operate/rs/databases/memory-performance/eviction-policy/。

2.Redis缓存刷新

使用缓存后会引入一个问题:当数据库的数据更新后(新增、修改、删除),如何保证数据的一致性(缓存里面的数据和数据库里面的数据是一样的)?即我们平常所说的“缓存刷新”。Redis 缓存刷新逻辑一般是两个方向:

(1)设置TTL(Time To Live)

TTL设置为多长,取决于具体业务,这里不展开讨论。

(2)新增的时候更新

当有数据更新的时候,删除掉缓存。

3.Redis GUI工具

(1)Redis Insight

Redis Insights (https://github.com/RedisInsight/RedisInsight)是书里面提到的Redis官方的GUI,试了下,不好用——比如选择某个库,得手动输入;值转换成JSON,得加载全部才能转,较麻烦。

(2)Another Redis Desktop Manager

ADRM(https://github.com/qishibo/AnotherRedisDesktopManager)是本人在实际工作中使用的GUI工具,本人更倾向于使用这个。

4.performence benchmark

(1)Apache Benchmark

Apache Benchmark使用详见:https://httpd.apache.org/docs/2.4/programs/ab.html。

(2)gnuplot

本人也是第一次听说 Apache 和 gnuplot,这里 mark 一下。

二、英语总结

1.eviction

p108, For production usage, it's recommends to configure an eviction policy.

(1)eviction:evict的名词形式。

(2)evict: e-(out, away) + vincere("conquer")。vt. to force sb to leave somewhere(驱逐).

evict的本意是驱逐,在Redis里面,“eviction policy”算是一种比喻用法。In computing, "evict" is used metaphorically, as if the data is being "forced out" of memory, similar to how a person might be evicted from a property.

2.wicked

As we can see, retrieving data from memory (Redis) is wicked fast compared to retrieving

data from disk (MongoDB).

wicked 既可以做形容词,可以做副词,这里的用法是做副词。

3.work like a charm

这是一个惯用语(idom),意为“to work very well”。

三、其它

有时候总想着快速掌握这些编程技能,而从这么多年的编程工作经历看,“掌握”只是一个结果,我们需要注重的是过程。就如这一刻,在阅读这本书的过程中,当进展顺利时,我知道自己掌握了这些知识点,而当遇到问题时,我知道这是因为自己还没有掌握了或者说还不够熟练,那么自己如何解决这些问题?这才是重点。每天阅读的进度有时快,有时慢,而怎样才能保证一个最基本的阅读量,这是我们在阅读过程中需要去思考的,需要去实践的。

四、参考资料

1. 编程

(1) Mohamed Labouardy,《Building Distributed Applications in Gin》:https://book.douban.com/subject/35610349

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com

(2) Cambridge Dictionary:https://dictionary.cambridge.org

欢迎搜索及关注:编程人(a_codists)

《使用Gin框架构建分布式应用》阅读笔记:p108-p126的更多相关文章

  1. CI框架源码阅读笔记5 基准测试 BenchMark.php

    上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...

  2. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...

  3. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

  4. CI框架源码阅读笔记2 一切的入口 index.php

    上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...

  5. CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

    最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...

  6. CI框架源码阅读笔记9 CI的自动加载机制autoload

    本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ...

  7. CI框架源码阅读笔记8 控制器Controller.php

    最近时间有些紧,源码阅读系列更新有些慢.鉴于Controller中代码比较少,本次Blog先更新该文件的源码分析. 在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数 ...

  8. CI框架源码阅读笔记6 扩展钩子 Hook.php

    CI框架允许你在不修改系统核心代码的基础上添加或者更改系统的核心功能(如重写缓存.输出等).例如,在系统开启hook的条件下(config.php中$config['enable_hooks'] = ...

  9. ****CI框架源码阅读笔记7 配置管理组件 Config.php

    http://blog.csdn.net/ohmygirl/article/details/41041597 一个灵活可控的应用程序中,必然会存在大量的可控参数(我们称为配置),例如在CI的主配置文件 ...

  10. CI框架源代码阅读笔记5 基准測试 BenchMark.php

    上一篇博客(CI框架源代码阅读笔记4 引导文件CodeIgniter.php)中.我们已经看到:CI中核心流程的核心功能都是由不同的组件来完毕的.这些组件类似于一个一个单独的模块,不同的模块完毕不同的 ...

随机推荐

  1. 使用MPI时执行代码时运行命令中参见的几种参数设置

    我们写完mpi代码以后需要通过执行命令运行写好的代码,此时在运行命令中加入设置参数可以更好的控制程序的运行,这里就介绍一下自己常用的几种参数设置. 相关资料,参看前文: https://www.cnb ...

  2. 链接池偶尔报错:HikariPool-1 - Connection is not available, request timed out after 39985ms.

    1.背景 线上服务器偶尔报错如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.e ...

  3. 必看!S3File Sink Connector 使用文档

    S3File 是一个用于管理 Amazon S3(Simple Storage Service)的 Python 模块.当前,Apache SeaTunnel 已经支持 S3File Sink Con ...

  4. "揭秘CentosChina爬虫项目:掌握Scrapy框架的必备技巧与数据库设计"

    Centoschina 项目要求 爬取centoschina_cn的所有问题,包括文章标题和内容 数据库表设计 库表设计: 数据展示: 项目亮点 低耦合,高内聚. 爬虫专有settings custo ...

  5. JavaScript设计模式样例十五 —— 状态模式

    状态模式(State Pattern) 定义:创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象.目的:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类 ...

  6. 学习设计微服务:api认证

    前言最近再学习微服务,所以把自己的个人站点https://www.ttblog.site/拆分成微服务.目前正在思考微服务里面的认证与授权,网上百度到都是根据用户名和密码来实现的,考虑到实际的原因,我 ...

  7. Linux 主流桌面环境

    GNOME KDE Xfce Ubuntu 使用 GNOME 作为桌面环境. 基于 KDE Plasma 开发的 Ubuntu 发行版:Kubuntu 基于 Xfce 开发的 Ubuntu 发行版:X ...

  8. 【YashanDB知识库】手动停止统计信息自动收集任务导致的性能变差

    [问题分类]功能使用 [关键字]统计信息收集 [问题描述]UAT对外演示环境因统计信息收集任务引起数据库整理性能变慢无应急处理手段 [问题原因分析] ● DROP_JOB程序用于删除一个非执行状态下的 ...

  9. RestoreFormer++: Towards Real-World Blind Face Restoration from Undegraded Key-Value Pairs(IEEE,2023,8)

    RestoreFormer++: Towards Real-World Blind Face Restoration from Undegraded Key-Value Pairs(IEEE,2023 ...

  10. Vue配置代理(devServer)解决跨域问题

    1.作用: Vue官方文档的解释是: 如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器.这个问题可以通过 vue.config.j ...