0%

因为 Redis 是内存型数据库,它将自己的数据库状态存储在内存里面,所以如果不想办法将存储在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解决这个问题,Redis 提供了 RDB、AOF 持久化功能,这个功能可以将 Redis 在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。

Redis 通过 MULTI EXEC WATCH 等命令来实现事务功能。事务提供了一种将多个命令打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。

阅读全文 »

虚拟机将描述类的数据从字节码文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。类加载器负责将字节码文件中的二进制数据加载到内存中,在运行时数据区的方法区内创建 Class 对象,这也是类加载过程的最终产物。类型的加载、链接、初始化的过程都是在程序运行时完成的。

阅读全文 »

在计算机科学中,垃圾回收(英语:Garbage Collection,缩写为 GC)是指一种自动的存储器管理机制。当某个程序占用的一部分内存空间不再被这个程序访问时,这个程序会借助垃圾回收算法向操作系统归还这部分内存空间。垃圾回收器可以减轻程序员的负担,也减少程序中的错误。垃圾回收最早起源于 LISP 语言。当前许多语言如 Smalltalk、Java、C# 和 D 语言都支持垃圾回收器。

阅读全文 »

最初在使用 MySQL 数据库时,仅仅停留在增删改查的层次。缺乏对于数据库整体的认知。随着工作中接触到的需求越来越复杂,渐渐的认识到需要再次深入的去学习一下 MySQL。最近这几个月看了一些数据库相关的书籍,整理出了下面一些知识点。

阅读全文 »

Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于 Disruptor 开发的系统单线程能支撑每秒 600 万订单,2010 年在 QCon 演讲后,获得了业界关注。2011年,企业应用软件专家 Martin Fowler 专门撰写长文介绍。同年它还获得了 Oracle 官方的 Duke 大奖。

阅读全文 »

Sidekiq 是一个用于后台作业的处理框架,它提供了执行 定时异步 任务的后台任务处理系统。可以集成在 Rails 项目中使用,也可以单独的使用。通常用来处理耗时的任务,如上传图像,发送邮件等。它可以配置多个队列,将不同类型的任务分配到各自的队列中。Sidekiq 会将一些运行时的数据存放在 Redis 中,所以请先确保你安装了 Redis。在本篇文章中,我们将对如何在 Rails 中使用 Sidekiq 进行介绍和分析。

阅读全文 »

Puma

Puma 是 Rails 的默认 Web Server,在创建 Rails 项目时已经自动添加了 Puma 的依赖。Puma 是用了多进程加多线程模型,它可以同时在 fork 出来的多个 worker 中创建多个线程来处理请求;不仅如此 Puma 还实现了用于提高并发速度的 Reactor 模块和线程池能够在提升吞吐量的同时,降低内存的消耗。

阅读全文 »

在 Ruby 中,当你需要访问一个常量的时候,很简单直接使用这个常量的名字就行。但是你知道 Ruby 是如何查找一个常量的吗?简单的讲 Ruby 会按照 Module.nesting => Module.nesting.first.ancestors => Object.ancestors 的顺序去查找常量。

阅读全文 »