Bootstrap

Redis 最后一课

Redis 学习笔记最后一篇,Redis 使用规范建议和经验学习以及运维工具。极客时间《Redis 核心技术与实战》专栏学习笔记 25,部分已经作为留言发布,但是留言太多,排在后面的一般很难被大家看到,所以集中发布在这里,欢迎讨论。

题图来自 《万亿级日访问量下,Redis在微博的9年优化历程 》

加餐(六)|  Redis 的使用规范小建议

好像没怎么看到过 bigkey 的标准定义,之前误以为真的是"key"太大,后来才发现是 value 太大。

键值对使用规范

  • key 命名规范:业务名作前缀,冒号分隔,加业务数据名,尽量避免数据库切换。key 的长度最好不超过 31(SDS结构元数据大小 1 字节)

  • 避免使用 bigkey:String 类型的数据控制在 10KB 一下,集合类型的元素个数控制在 1 万以内。

  • 使用高效的序列化和压缩方法:protostuff 和 kryo 优于 Java 内置的 java-build-in-serializer;如果使用 XML 或者 JSON 可以考虑压缩,snappy 或 gzip

  • 使用整数对象共享池:在满足业务数据需求的前提下,尽量用整数

数据保存规范

  • 使用 Redis 保存热数据

  • 不同的业务数据分实例存储

  • 保存数据时,设置过期时间

  • 控制 Redis 实例的容量,2~6 GB

命令使用规范

  • 线上禁用部分命令:KEYS、FLUSHALL、FLUSHDB

  • 慎用 MONITOR

  • 慎用全量操作命令

课代表 @Kaito 大神的 Redis 使用规范值得收藏。

加餐(七) | 从微博的Redis实践中,我们可以学到哪些经验?

顺着专栏给的链接,先去看了《》,虽然没有机会面对类似微博这样的体量(2019年 100T+ 存储、1000+ 台物理机、10000+ Redis实例、万亿级读写、响应时间 20 毫秒),但是也算是大开眼界。

其实原文中的那个缓存、存储、队列技术选型流程图,就很有价值。

分享的很多内容不明觉厉,结合专栏的解析来看,可以感觉到微博团队在 Redis 运维方面做的比较深入。有一点疑问就是,基于 Redis 的早期版本做了很多二次开发,那么是否能够和 Redis 的新版本兼容?或者说是否反馈回了开源社区?

老师最后总结的业务纵切、平台横切很有高屋建瓴的味道,当然,最终还是要靠代码实践。

有一点好奇,一般分享都是大厂如何在高性能、大容量和可扩展方面应用 Redis,有没有人分享过“小厂”是如何使用 Redis,直接拿开源版本上生产环境么?可能也够用。

希望以后有机会能回答课后题中关于 Redis 的优化和二次开发的问题。