Redis 核心技术与实战
蒋德钧
中科院计算所副研究员
79224 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 53 讲
开篇词 (1讲)
实践篇 (28讲)
Redis 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

22 | 第11~21讲课后思考题答案及常见问题答疑

你好,我是蒋德钧。
咱们的课程已经更新到第 21 讲了,今天,我们来进行一场答疑。
前半部分,我会给你讲解第 11~21 讲的课后思考题。在学习这部分内容时,可以和你的答案进行对照,看看还有哪里没有考虑到。当然,有些问题不一定有标准答案,我们还可以继续讨论。
后半部分,我会围绕着许多同学都很关注的如何排查慢查询命令和 bigkey 的问题,重点解释一下,希望可以解答你的困惑。
好了,我们现在开始。

课后思考题答案

第 11 讲

问题:除了 String 类型和 Hash 类型,还有什么类型适合保存第 11 讲中所说的图片吗?
答案:除了 String 和 Hash,我们还可以使用 Sorted Set 类型进行保存。Sorted Set 的元素有 member 值和 score 值,可以像 Hash 那样,使用二级编码进行保存。具体做法是,把图片 ID 的前 7 位作为 Sorted Set 的 key,把图片 ID 的后 3 位作为 member 值,图片存储对象 ID 作为 score 值。
Sorted Set 中元素较少时,Redis 会使用压缩列表进行存储,可以节省内存空间。不过,和 Hash 不一样,Sorted Set 插入数据时,需要按 score 值的大小排序。当底层结构是压缩列表时,Sorted Set 的插入性能就比不上 Hash。所以,在我们这节课描述的场景中,Sorted Set 类型虽然可以用来保存,但并不是最优选项。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Redis 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • 攻城拔寨
    关于 bigkey 排查,我觉得 rdb-tools 是很好的工具。 1. 它是对 rdb 进行分析的,不会对 redis 有影响。 2. 它的分析结果比较丰富: key 类型,元素数量,总字节长度,最大元素字节长度,过期时间等等。
    2
    79
  • ccx
    bigkey 分析,我司 DBA 用的这个工具 https://github.com/sripathikrishnan/redis-rdb-tools
    22
  • snailshen
    我这里还有个问题,希望老师能给指导? redis缓存淘汰策略是惰性和定时删除,如果一个主从集群,一个查询请求查询过期的key,走的是slave读取key的值,但是由于slave不会进行惰性删除,那么这个查询请求就会获取key的值返回给客户端,这个数据其实就产生了一致性问题。怎么避免这种情况啊?希望老师能够解答一下。谢谢!
    3
    12
  • 山顶的洞
    多年老菜鸟,如何破局
    2
    10
  • 九时四
    豁然开朗
    3
  • 悟空聊架构
    代表性问题的解答是本文亮点啊,收藏一波!
    1
  • escray
    看了一下课后题的解答,可能我错的最离谱就是 Redis 的写操作是否在关键路径上,老师的答案是在关键路径上。 对比自己的想法、课代表的答案和老师的解释,我觉的老师说的更合理一些。 和上次答疑同样,我比较喜欢这种回顾的方式,对于专栏第二个部分 Redis 的数据结构和性能诊断算是有了初步的了解。 看到有同学说在数据量小的时候可以考虑在 Sorted Set 上做聚合计算,作为小白,有点怀疑,如果数据量小,那么在哪里做聚合计算应该都可以,毛毛雨……
    1
  • stock石头
    关于是否把聚合计算作为 Sorted Set 的内在功能,考虑到 Redis 的读写功能是由单线程执行,在进行数据读写时,本身就会消耗较多的 CPU 资源,如果再在 Sorted Set 中实现聚合计算,就会进一步增加 CPU 的资源消耗,影响到 Redis 的正常数据读取。--关于这个的疑问,如果我用lua来对zset的数据进行聚合统计(都是O(n)复杂度)可取吗?测试发现其实在数据量小的时候,执行效率相差不大,但在数据量到500这样的时候,性能差了一倍,感觉是因为c语言和lua之间的数据交换导致的。
    1
  • shen
    redis 切片集群 需要绑CPU核吗?
    归属地:中国香港
  • kls
    老师 你好,lua脚本在Redis分布式环境中,有哪些比较合适的方案呢?看到网上的解答都是用hash tag来处理,但是这对于已存在的业务就不合适了,有解决的办法吗?
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部