RedisConf19会议记录 Day0: Training

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: # 前言 2019年的RedisConf比以往时候来的更早一些,今年会议时间是4月1-3号,仍然是在旧金山鱼人码头Pier 27。恰逢今年是Redis第10周年,规模也比以往大一些,注册人数超过1600人,总共有80个议题,除了RedisLabs外还有很多云厂商和Redis用户带来分享,今年也是阿里云首次在RedisConf进行分享。 # Agenda 会议总共三天,第一天是Tr

前言

2019年的RedisConf比以往时候来的更早一些,今年会议时间是4月1-3号,仍然是在旧金山鱼人码头Pier 27。恰逢今年是Redis第10周年,规模也比以往大一些,注册人数超过1600人,总共有80个议题,除了RedisLabs外还有很多云厂商和Redis用户带来分享,今年也是阿里云首次在RedisConf进行分享。

Agenda

会议总共三天,第一天是Training Day,主要是作者开场加RedisLabs的培训课程,今天的agenda如下图:

image.png

会议记录

Breakfast

注册过程很简单,输入自己的名字就可以打印入场券,我们到的比较早就先上来吃早餐。

image.png

早餐还不错,有各种水果和面包蛋糕,还有咖啡和茶,终于有口热水喝了,4月初的旧金山还是挺冷的,我还裹着羽绒服但是美帝人民已经有短袖短裤上阵的了。

Opening Session

在课程开始之前,Redis作者antirez先来开场,和Redis的开发一样依然是随性的风格,没有准备PPT直接现场演示。

image.png

作者开场对Redis的介绍比较简单,像一些数据结构和基础命令的使用,也是为了照顾到大多数的受众,来参会的也有不少刚刚接触Redis的用户。比较重要的是作者认为Redis现在已经不止是Cache了,因为具备persistence持久化和replication复制功能,已经是一个完备的Database,这也是今年会议的主题之一。

期间有个小插曲,在介绍list时作者忘记了RPOPLPUSH这个命令要怎么写,现场打开源码,vi了一把server.c才搞定,哈哈,毕竟Redis发展到现在已经10年,有6种数据结构和上百个命令,有些命令也非常复杂。

之后和作者做了下简单交流,作者很高兴这次我们过来参加RedisConf,对前年云栖大会的中国之行印象深刻,也称赞了阿里云对Redis社区的贡献,不过由于昨天才到旧金山,时差还没倒过来比较疲惫,很快就回酒店休息了。

先来张合影镇楼,哈哈。

image.png

Training

之后是RedisLabs的课程,我们挑了几个去听,整体听下来的感觉比较基础,还是偏向于入门的介绍。

  • Redis as a Primary Data Store

    这个课程主要是讲如何使用事务来构造各个key的关系,毕竟Redis是key-value型数据库,要同时修改多个有关系的key就会有并发问题,此时就要利用事务来保证原子性。
    
  • Redis Clustering

    关于集群的一些简单介绍,比较重要的是RedisLabs在社区Cluster上也做了一套Proxy来方便用户接入,Proxy是今年超热门的话题。
    
  • Streaming Architectures

    Redis 5.0引入了Streams数据结构,用来对标kafka,这个课程对Streams做了下科普,一些命令的使用演示,演讲人Itamar也是Github上的老朋友了,很风趣幽默,他说已经告诉了好多人这次RedisConf我们会来,还邀请他的朋友明天去参加我们的session,一直称我们是amazing guys哈哈。
    

课程期间作者从Twitter上发来消息,问我们中午有没有时间一起for Redis internals talk,于是乎约了午饭时间来讨论。

Lunch & Redis internals talk

今天的午餐比较简陋,就是便当,有火鸡三明治、牛肉汉堡等,但是都是冷的。。。中国胃还是吃不惯啊。随便拿了个火鸡三明治,一边吃着一边和作者讨论了。

作者说上次来杭州的时候玩的很开心,逛了西湖和灵隐寺,在灵隐寺吃了素斋很不错,尤其是豆腐很好吃,意大利的豆腐都是硬的,龙井茶也很好喝,上次买的已经喝完了,意大利也没有卖的,比较遗憾这次没给他带份龙井当礼物,下次来中国多买点哈哈。同时也邀请我们去意大利玩,自己平时是在西西里住,但是他在佛罗伦萨有房子,如果我们去可以住他家里,聊到西西里的美丽传说大家会心一笑哈哈,还有电影教父,来自西西里的黑手党,作者自嘲自己家乡的人在世界各地制造麻烦。

午饭闲聊完开始讨论正事,作者重新启动了threaded-io分支的开发,也就是网络读写多线程(前一个星期还在博客上说这个feature短期不打算开发,结果现在又开始了,真是随性哈),因为读写网络的read/write系统调用在Redis执行期间占用了大部分CPU时间,如果把网络读写做成多线程的方式对性能会有很大提升。现在已经实现了第一版,write side也即回复客户端这部分已经完成了,并且去掉了主线程和IO线程之间的互斥锁,采用busy loop的形式来等待io线程工作结束,这部分能够有50%的性能提升,架构图如下:

image.png

Redis采用的是事件驱动模型,执行逻辑仍然是单线程串行执行模式,待所有命令执行完成之后,把客户端的reply分发给多个IO线程,等IO线程回写客户端完成后再进行下一轮事件循环。

write side采用这种模式提升很明显,现场测试性能可以提升50%,但是比较奇怪的是read side采用同样模式却没有任何提升,于是现场code review了下:

image.png

代码逻辑上没有发现什么明显的问题,会后再checkout这个分支仔细看下。其实目前社区threaded-io分支的架构设计和我们阿里云在做网络多线程的早期版本比较像,整个逻辑read-work-write仍然串行,只是把read/write多线程化,这样对Redis原来的逻辑改动较小,我们后来进行了更彻底的拆分,read/work/write流水线化,不同客户端的read/work/write可以并行,但是仍然保留work的串行逻辑不破坏Redis的执行语义,设计详见 https://www.atatech.org/articles/112918 ,这个设计思路也和作者进行了交流,不过Redis作为一个开源项目,逻辑简单、可读性强还是占了比较高的优先级,他不想把Redis做的太复杂,所以还是只做read/write的并行化,尽量的减少read/write的整体时间而不是read/work/write的流水线,内部使用和开源项目还是有不同的侧重点。

来个硬广:阿里云Redis多线程性能增强版已经上线售卖,欢迎大家使用。

另外就是关于Proxy,就在昨天刚刚放到Github上,目前只是一个demo比较简单,只有一些基础功能,但是这个项目不是作者自己开发,而是交给了Fabio,一个在意大利的小伙伴,我们也对阿里云的Proxy做了介绍,我们的Proxy已经很成熟了,也实现了很多高级功能比如:多DB、block类命令、PUBSUB、Lua脚本、事务、多key命令支持等,作者很有兴趣问我们有没有开源,由于使用了一些内部类库目前还没有开源,不过后面还是有开源的计划的,作者也邀请我们参与到社区Proxy的开发中。

Proxy项目地址: https://github.com/artix75/redis-cluster-proxy

Happy Hour

和作者讨论的时间比较久,下午的课程就没再参加,直接到了会后的Happy Hour,大家一起聊聊天互相认识一下,有吃的有喝的,一起哈皮。

image.png

这个墨西哥玉米饼还不错,有辣酱和牛油果酱等配料。

image.png

这个不知道叫啥的卷,里面的酸黄瓜超级酸,无法承受。。。

image.png

还有各种红酒、啤酒,感觉比国内的度数都要高,喝了一杯啤酒就有微醺的感觉。

同时也和AWS的几个同学做了交流,AWS这次来了6个人有两场session,整场也比较活跃,可谓人多势众,作为云厂商大家都有一样的痛,Redis用户普遍要求比较高,10ms+的延迟工单就来了(捂脸哭),网络问题也是频发,基础设施的稳定性建设也是非常重要。

image.png

结语

愉快的第一天就结束了,明天再带来后续报道。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
|
1月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
|
1月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
77 6
|
1月前
|
缓存 NoSQL 关系型数据库
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
本文深入探讨了Redis缓存的相关知识,包括缓存的概念、使用场景、可能出现的问题(缓存预热、缓存穿透、缓存雪崩、缓存击穿)及其解决方案。
184 0
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
|
11天前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
12天前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构
|
5天前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
22 5
|
20天前
|
缓存 NoSQL Redis
Redis 缓存使用的实践
《Redis缓存最佳实践指南》涵盖缓存更新策略、缓存击穿防护、大key处理和性能优化。包括Cache Aside Pattern、Write Through、分布式锁、大key拆分和批量操作等技术,帮助你在项目中高效使用Redis缓存。
112 22
|
19天前
|
缓存 NoSQL 中间件
redis高并发缓存中间件总结!
本文档详细介绍了高并发缓存中间件Redis的原理、高级操作及其在电商架构中的应用。通过阿里云的角度,分析了Redis与架构的关系,并展示了无Redis和使用Redis缓存的架构图。文档还涵盖了Redis的基本特性、应用场景、安装部署步骤、配置文件详解、启动和关闭方法、systemctl管理脚本的生成以及日志警告处理等内容。适合初学者和有一定经验的技术人员参考学习。
115 7
|
24天前
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
59 10