主页

Redis - 过期删除机制

一、过期时间 1. 设置命令 EXPIRE <KEY> <TTL> : 将键的生存时间设为 ttl 秒 PEXPIRE <KEY> <TTL> :将键的生存时间设为 ttl 毫秒 EXPIREAT <KEY> <timestamp> :将键的过期时间设为 timestamp 所指定的秒数时间戳 PEXPIREAT &...

阅读更多

Redis - 持久化机制

Redis 是内存型数据库,一旦服务器进程退出,Redis 中的数据就会丢失,为了解决这一问题,Redis 提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据丢失。 一、RDB Redis 提供默认的 RDB 持久化功能,这一功能可以将 Redis 在内存中的数据保存到硬盘中,可以手动执行,也可以在 redis.conf 中配置成定期执行。 1. 手动执行 RDB 文件可以...

阅读更多

Redis - 底层数据结构

一、简单动态字符串(SDS) Redis 没有直接使用 C 语言传统的字符串表示,而是自己构建了一种明为简单动态字符串(Simple Dynamic String,SDS)的抽象类型,并将 SDS 用作 Redis 的默认字符串表示。 1. 数据结构 SDS 字符串可以看做是对 C 字符串的进一步封装,但是内部实现十分巧妙,有效避免了内存溢出、申请销毁开销过大等问题。 str...

阅读更多

Redis - 五种常用数据类型

一、String String 表示的是一个可变的字节数组,可以存储字符串、整数或者浮点数,能够对整个字符串或者子串执行操作,也能够对整数和浮点数执行自增或自减操作。 Redis 的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似于 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配,如图中所示,内部为当前字符串实际分配的空间 Capacit...

阅读更多

内存泄漏与内存溢出

一、基本概念 1. 内存泄漏 内存泄漏是指那些本应该回收的内存对象无法被系统回收的现象。在 C++ 中需要手动释放内存对象,所以 C++ 中更容易出现内存泄漏。Java 引入了内存回收机制,使得在 C++ 中令人头疼的问题得到了改善,但并不意味着不需要关注 Java 中的内存,因为垃圾回收机制不能完全保证内存对象在该释放的地方释放,JVM 中普遍根据引用可达法性是否需要回收对象,可能会存...

阅读更多

RESTful API 最佳实践

一、什么是 RESTful? REST,Resource Representational State Transfe 的缩写,翻译过来就是 “资源”在网络传输中以某种“表现形式”进行“状态迁移”。如果一个架构符合 REST 原则,就称它为 RESTful 架构。 资源(Resource): 可以把真实的对象数据称为资源。一个资源既可以是一个集合,也可以是单个个体。比如我...

阅读更多

Redis - 概述

一、什么是 Redis? Redis(Remote Dictionary Server)是一个使用 C 语言编写、开源的高性能非关系型(NoSQL)的键值对数据库。 Redis 可以存储键和五中不同类型的值之间的映射。键的类型只能为字符串,值支持物种数据类型:字符串、列表、集合、散列表、有序集合。 与传统数据库不同的是 Redis 的数据是存储在内存中的,所以读写速度非常快,因此 Re...

阅读更多

左神 — 链表

1. 打印两个有序链表的公共部分 题目 给定两个有序链表的头指针 head1 和 head2,打印两个链表的公共部分。 思路 双指针,head1 小则 head1 往下移,head2 小则 head2 往下移,相等则打印。 public void printCommonPart(Node head1, Node head2) { while (head1 != null &...

阅读更多