《用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. 安装RabbitMQ遇到的一些坑

    Ubantu18.0正确安装RabbitMQ 1.安装erlang 因为RabbitMQ需要erlang语言的支持,所以我们需要先安装erlang. sudo apt-get install erla ...

  2. 关于mysql配置文件中jdbc url 的记录

    版本不同 url不同 大同小异 基本就是不同参数配置的区别 maven 仓库地址 https://mvnrepository.com/artifact/mysql/mysql-connector-ja ...

  3. 从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2

    根据 <0 基于socket和pthread实现多线程服务器模型>所述,server创建子线程的时候用的是以下代码: pconnsocke = (int *) malloc(sizeof( ...

  4. zabbix 二次开发(添加menu)

    zabbix 二次开发--- 在zabbix菜单栏中增加 CMDB 菜单,该菜单下有个子栏目 CMDB overview,如图: 实现此效果,我们需要修改两个地方:menu.inc.php 和 mai ...

  5. animate动画库的使用

    在vue中便捷使用animate动画库效果. 安装animate动画库 npm install animate.css --save 在vue跟目录中 main.js 导入animate动画库 imp ...

  6. 编译器实现之旅——第十六章 代码装载、链接器、全局变量与main函数

    在上一章的旅程中,我们已经实现了函数调用的代码生成器分派函数,但在上一章的末尾,我们留下了三个问题: 我们需要为全局变量压栈 main函数需要在程序启动时被自动调用 我们需要实现一个链接器,以将所有的 ...

  7. Docker高级:Redis集群实战!4主4从缩容到3主3从,怎么处理?

    在上一篇,我们学会了redis集群的扩容.从3主3从扩容到4主4从. 那么,接着,活动过去了.流量没有那么大了.需要缩容了.从4主4从缩容到3主3从了.那么这个时候又该怎么处理呢? PS本系列:< ...

  8. three.js实现太阳系

    前言 刚开始使用three.js时会不太熟悉,想写一些项目增加理解,网上翻了好多文章,不是画立方体就是画三角形,最后偶然看到这个网站,十分炫酷. 我们也许没那么牛逼,但我们可以整个简略版的太阳系来练练 ...

  9. 音视频 SDK |合理配置视频参数,提升使用质量

    一.前言 在视频通话或直播时,开发者可以根据需要指定推流和拉流视频相关配置,如视频采集分辨率.视频编码输出分辨率.视频帧率.码率.视图模式和镜像模式. 设置合适的视频分辨率.帧率和码率可以在音视频场景 ...

  10. 一文快速上手-Vue CLI脚手架

    目录 安装Vue CLI Vue CLI新建项目 vue.js 3 项目目录结构 项目的运行和打包 vue.config.js文件解析 安装Vue CLI (1) 全局安装Vue CLI 方式一(推荐 ...