最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执 ......
300
0
0
2022-04-14
Previously缓存系统涉及的问题和知识点是比较多的,我主要分为以下几个方面来跟大家探讨:稳定性正确性可观测性规范落地和工具建设 我们分析了缓存系统的稳定性,介绍了 go-zero 是怎么解决缓存穿透、缓存击穿、缓存雪崩问题的。比较浅显易懂,且具有比较强的实战意义,推荐一读。本文作为系列文章第二篇,主要跟大家探讨『缓存数据一致性』缓存正确性上篇文章提到, ......
310
0
0
2022-04-14
Redis 是被广泛使用的基础软件之一,对于架构师和运维人员来说,了解 Redis 的高可用方案和背后的原理,是必备的基础知识。本文作者深入分析了 Redis 高可用的方方面面,并且做了有效总结,相信对广大读者可以起到很好的领路作用。Redis 中为了实现高可用采用了如下两个方式:主从复制数据。采用哨兵监控数据节点的运行情况,一旦主节点出现问题由从节点顶上继 ......
222
0
0
2022-04-14
本文深入浅出的介绍了Redis的五种数据类型,并通过多个实用示例展示了Redis的用法。除此之外还讲述了Redis的优化方法和扩展方法。一共由三个部分组成,第一部分对Redis进行了介绍,说明了Redis的基本使用方法、它拥有的5种数据结构以及操作5种数据结构的命令,并详解了如何使用Redis去构建文章聚合网站、cookie、购物车、网页缓存。数据库行缓存等 ......
217
0
0
2022-04-14
lua与Openresty介绍lua是一个小巧的脚本语言,由标准C编写而成,几乎在所有操作系统和平台上都可以编译运行。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。应用场景:游戏开发、独立应用脚本、redis中嵌套调用实现类似事务的功能,web容器汇总处理NGINX的过滤缓存等等逻辑Openresty介绍OpenResty是一个基于 ......
333
0
0
2022-04-14
本文背景在之前的文章中,我曾介绍过好几个Redis的可视化管理客户端,像国产的RedisView、WebRedisManager以及一个官方收费的RedisDesktopManager,这几个不管是从颜值还是功能可能都有些差强人意,就曾有朋友在留言去吐槽过。那么因此今天就介绍两个免费开源且跨平台的Redis客户端管理工具,其中一个也是国人开发的!RedisP ......
251
0
0
2022-04-14
一、安装gcc依赖由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装yum -y install gcc二、下载并解压安装包wget download.redis.io/releases/redis-5....tar -zxvf redis-5.0.3.tar.gz下载最新稳定版 ......
336
0
0
2022-04-13
实现分布式锁常见有三种实现方式:基于数据库基于缓存(redis)分布式锁,基于 Zookeeper 实现分布式锁以下是他们在可靠性、性能、复杂性三个维度的对比评判维度比较可靠性Zookeeper > 缓存 > 数据库性能缓存 > Zookeeper >= 数据库复杂性Zookeeper >= 缓存 > 数据库由于 redi ......
339
0
0
2022-04-12
前言大家好!我是万俊峰,go-zero 作者。感谢 ArchSummit 提供这么好的机会来跟大家分享一下go-zero的缓存最佳实践。首先,大家可以想一想:我们在流量激增的情况下,服务端哪个部分最有可能会是第一个瓶颈?我相信大部分人遇到的都会是数据库首先扛不住,量一起来,数据库慢查询,甚至卡死。此时,上层服务有怎么强的治理能力都是无济于事的。所以我们常说看 ......
270
0
0
2022-04-12
常用的 SQL 数据库的数据都是存在磁盘中的,虽然在数据库底层也做了对应的缓存来减少数据库的 IO 压力。由于数据库的缓存一般是针对查询的内容,而且粒度也比较小,一般只有表中的数据没有发生变动的时候,数据库的缓存才会产生作用。但这并不能减少业务逻辑对数据库的增删改操作的 IO 压力,因此缓存技术应运而生,该技术实现了对热点数据的高速缓存,可以大大缓解后端数据 ......
212
0
0
2022-04-10
选择 redis 的情况: 1、复杂数据结构, value 的数据是哈希,列表,集合,有序集合等这种情况下,会选择redis, 因为 memcache 无法满足这些数据结构,最典型的的使用场景是,用户订单列表,用户消息,帖子评论等。 2、需要进行数据的持久化功能,但是注意,不要把 redis 当成数据库使用,如果 redis挂了,内存能够快速恢复热数据,不会 ......
295
0
0
2022-04-08
前言在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢?先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。 缓存维护方案一假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库,如下流程图所示:1)线程A发起一个写操作,第一步del cache2)线程A第二步写入新数据到DB3)线程B发起一个读操 ......
244
0
0
2022-04-08
在之前我们介绍了,Redis有五种基础数据类型,分别是String,Set,List,Hash与SortSet。今天我们又学习了一个命令,我们可以使用DEBUG OBJECT key查询Redis中,存储数据的一些关键信息,如下所示:我们发现了ziplist跟intset这两种不在上述基础类型的数据结构,这又是什么呢?Redis为了节省内存空间,当Hash与 ......
297
0
0
2022-04-08
1.什么是redis?Redis 是一个基于内存的高性能key-value数据库。2.Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是 ......
233
0
0
2022-04-07
点关注,不迷路;持续更新Java相关技术及资讯!!!关注、转发、评论头条号每天分享java 知识,私信回复“源码”赠送Spring源码分析、Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式资料1、什么是Redis?Redis 是完全开源免费的, 遵守 BSD 协议, 是一个高性能的 key-value 数据库。Redi ......
290
0
0
2022-04-07