【第二讲,Redis开发实操之春运迁徙页面】
讲师:阿里云NoSQL内核工程师;Redis Committer,Jedis Reviewer,凡澈
课程内容:如何使用Redis:一般性Redis启动到连接;云redis从开通到连接(创建,白名单,客户端连接);使用Redis Hash,Sorted Set,Stream等结构实现一个春运迁徙页面
答疑汇总:特感谢班委@邱谦 同学
Q1. Tarigis是什么数据结构?是阿里云开发的吗?
Redis企业版的Module支持的功能,底层是基于stream,可以做更多点、线、面之间的判断关系。在今天的例子中,判断路径有没有经过疫区就是通过线面之间有没有相交。TairGIS的详细介绍,可看这里https://help.aliyun.com/document_detail/145971.html 。Tarigis是由阿里云开发的。
Q2. RedisTemplate获取了哈希数据后,key在Redis中不存在,但是获取到的对象是空对象是怎么回事?
RedisTemplate使用过程中,要注意关于对象的序列化和反序列化的设置。
Q3.Tarigis的开源版是如何实现的?
Redis本身的GEO的实现。使用GEO HASH的原理,对各个地区的经纬度做了不断区分。Tarigis和RedisGEO不一样的是底层的数据结构是R tree,可以对它做索引,也可以做点线面相交的判断。
Q4.点面关系和线面关系之间的线面复杂度如何?
复杂度分为最好和最坏。R tree的复杂度,要考虑整个R tree上节点的维度,以及每个面的维度。
Q5.云数据库添加不同权限的功能是Redis原生的功能还是阿里云开发的?
云上的账户体系是由阿里云进行的二次开发。
Q6.一次要获取上百个key,累积起来耗时比较长,有没有什么更好的方案?
key不多的话,问题也不大。一次业务请求中key比较多的时候,建议把key分在不同的机器上,这样可以整体减少返回的时间,因为可以并发地执行。我们在后面的课程中也会提到如何优化key地设计。
Q7. Redis5.0的社区版支持Tarigis的功能吗?
不支持。支持企业版数据结构的Redis只有企业版Redis。
Q8.Password默认的用户名是什么?
默认的用户名是用户的实例ID。
Q9.云Redis和服务器自己安装的的Redis有什么区别?
Redis本身在运维方面由比较多问题与坑,对于整个资源和管理,云Redis在安全和弹性上都有更大的优势。在阿里云Redis的官方文档上也有云Redis和服务器安装的Redis由详细的比较。
Q10.Redis缓存的数据在开启AOF后,最多丢失1秒钟?事实上也是这样吗?
Redis在AOF的配置策略。最极端情况下可以配置每次刷新,大多数时候都是配置1秒刷新一次。1秒刷新是调用fsync,数据会经过一系列流程处理和配置。配置everysec策略,按照官方文档的描述,最多丢失1秒的数据。
但实际上如果发生AOF加塞,修改命令添加到aof_buf之后,如果配置是everysec那么会每秒执行fsync操作,调用write写入磁盘一次。如果硬盘负载过高,fsync操作可能会超过1s,此时Redis会采取延迟fsync的策略,将会再等待1秒,也就是2秒后再进行fsync,这一次的fync不管执行多长时间都会进行。主线程阻塞直到fsync同步完成,所以最多可能丢失2s的数据,而不是1s。
Q11.云上的Redis是不是有大key监控?
有,云上Redis可以通过缓存分析来分析key,还有大key监控功能正在开发,后续会尽快上线。