Redis 实战 —— 02. Redis 简单实践 - 文章投票

需求 功能: P15 发布文章 获取文章 文章分组 投支持票 数值及限制条件 P15 如果一篇文章获得了至少 200 张支持票,那么这篇文章就是一篇有趣的文章 如果这个网站每天有 50 篇有趣的文章,那么网站要把这 50 篇文章放到文章列表页前 100 位至少一天 支持文章评分(投支持票会加评分), ... »

Redis 实战 —— 01. Redis 数据结构简介

一些数据库和缓存服务器的特性和功能 P4 名称 类型 数据存储选项 查询类型 附加功能 Redis 使用内存存储(in-memory)的非关系数据库 字符串、列表、哈希表、集合、有序集合 每种数据类型都有自己的专属命令,另外还有批量操作(bulk operation)和不完全(partial)的事务 ... »

Redis中哈希分布不均匀该怎么办

前言 Redis 是一个键值对数据库,其键是通过哈希进行存储的。整个 Redis 可以认为是一个外层哈希,之所以称为外层哈希,是因为 Redis 内部也提供了一种哈希类型,这个可以称之为内部哈希。当我们采用哈希对象进行数据存储时,对整个 Redis 而言,就经过了两层哈希存储。 哈希对象 哈希对象本 ... »

深入理解Redis之简单动态字符串

Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。Reids自己构建的sds要比默认的c字符串性能更好,也更安全。 ... »

为了加快速度,Redis都做了哪些“变态”设计

前言 列表对象是 Redis 中 5 种基础数据类型之一,在 Redis 3.2 版本之前,列表对象底层存储结构有两种:linkedlist(双端列表)和 ziplist(压缩列表),而在 Redis 3.2 版本之后,列表对象底层存储结构只有一种:quicklist(快速列表),难道通过精心设计的 ... »

redis存json数据时选择string还是hash

redis存json数据时选择string还是hash 我们在缓存json数据到redis时经常会面临是选择string类型还是选择hash类型去存储。接下来我从占用空间和IO两方面来分析这两种类型的优势。 1、占用空间 根据数据结构的共识我们知道hashtable类型是要比string类型更占用空 ... »

牺牲速度来节省内存,Redis是觉得自己太快了吗

前言 正常情况下我们选择使用 Redis 就是为了提升查询速度,然而让人意外的是,Redis 当中却有一种比较有意思的数据结构,这种数据结构通过牺牲部分读写速度来达到节省内存的目的,这就是 ziplist(压缩列表),Redis 为什么要这么做呢?难道真的是觉得自己的速度太快了,牺牲一点速度也不影响 ... »

一文带你探究Sentinel的独特初始化

摘要:本系列通过作者对Redis Sentinel源码的理解,详细说明Sentinel的代码实现方式。 Redis Sentinel 是Redis提供的高可用模型解决方案。Sentinel可以自动监测一个或多个Redis主备实例,并在主实例宕机的情况下自动实行主备倒换。本系列通过作者对Redis S ... »

Redis实战篇(一)搭建Redis实例

今天是Redis实战系列的第一讲,先从如何搭建一个Redis实例开始。 下面介绍如何在Docker、Windows、Linux下安装。 Docker下安装 1.查看可用的 Redis 版本 访问 Redis 镜像库地址:https://hub.docker.com//redis?tab=tags。 ... »

Redis性能篇(五)Redis缓冲区

Redis被广泛使用的一个很重要的原因是它的高性能。因此我们必要要重视所有可能影响Redis性能的因素、机制以及应对方案。影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 CPU核和NUMA架构的影响 Redis关键系统配置 Redis内存碎片 Redis缓冲区 这一讲, ... »

Redis性能篇(四)Redis内存碎片

Redis被广泛使用的一个很重要的原因是它的高性能。因此我们必要要重视所有可能影响Redis性能的因素、机制以及应对方案。影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 CPU核和NUMA架构的影响 Redis关键系统配置 Redis内存碎片 Redis缓冲区 这一讲学 ... »

Redis性能篇(三)Redis关键系统配置:如何应对Redis变慢

Redis被广泛使用的一个很重要的原因是它的高性能。因此我们必要要重视所有可能影响Redis性能的因素、机制以及应对方案。影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 CPU核和NUMA架构的影响 Redis关键系统配置 Redis内存碎片 Redis缓冲区 在前面的 ... »

Redis性能篇(一)Redis内部的阻塞式操作及应对方法

Redis被广泛使用的一个很重要的原因是它的高性能。因此我们必要要重视所有可能影响Redis性能的因素、机制以及应对方案。影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 CPU核和NUMA架构的影响 Redis关键系统配置 Redis内存碎片 Redis缓冲区 这一讲, ... »

Redis缓存篇(四)缓存异常

这一节,我们来学习一下缓存异常。缓存异常有四种类型,分别是缓存和数据库的数据不一致、缓存雪崩、缓存击穿和缓存穿透。 下面通过了解这四种缓存异常的原理和应对方法。 缓存和数据库的数据不一致 缓存和数据库的数据一致性包含两种情况: 缓存中有数据,缓存的数据值需要和数据库中的值相同; 缓存中没有数据,数据 ... »

Redis为什么这么快

前言 本篇博客已被收录GitHub:https://zhouwenxing.github.io/ 在日常开发中,为了保证数据的一致性,我们一般都选择关系型数据库来存储数据,如 MySQL,Oracle 等,因为关系型数据库有着事务的特性。然而在并发量比较大的业务场景,关系型数据库却又往往会成为系统瓶 ... »

Redis缓存篇(三)缓存污染

上一讲介绍了缓存满了,通过内存淘汰机制来淘汰掉数据。如果有的数据一直滞留在缓存中,但又没有应用使用,时间长了,就可能会占据大部分的缓存空间。 今天我们来学习一下缓存污染,以及如何解决缓存污染。 缓存污染 缓存污染,指留存在缓存中的数据,实际不会被再次访问了,但又占据了缓存空间。 要解决缓存污染的关键 ... »

Redis缓存篇(二)淘汰机制:缓存满了怎么办?

上一讲提到,缓存的容量总是小于后端数据库的。随着业务系统的使用,缓存数据会撑满内存空间,该怎么处理呢? 本节我们来学习内存淘汰机制。在Redis 4.0之前有6种内存淘汰策略,之后又增加2种,一共8种,如下图所示: noeviction策略:内存空间达到maxmemory时,不会淘汰数据,有新写入时 ... »

Redis性能篇(二)CPU核和NUMA架构的影响

Redis被广泛使用的一个很重要的原因是它的高性能。因此我们必要要重视所有可能影响Redis性能的因素、机制以及应对方案。影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 CPU核和NUMA架构的影响 Redis关键系统配置 Redis内存碎片 Redis缓冲区 这一讲, ... »