Study notes
GEO是什么?还可以定义新的数据类型吗? GEO是什么?还可以定义新的数据类型吗?
在第 2 讲中,我们学习了 Redis 的 5 大基本数据类型:String、List、Hash、Set 和 Sorted Set,它们可以满足大多数的数据存储需求,但是在面对海量数据统计时,它们的内存开销很大,而且对于一些特殊的场景,它们
2024-09-16
有一亿个keys要统计,应该用哪种集合? 有一亿个keys要统计,应该用哪种集合?
在 Web 和移动应用的业务场景中,我们经常需要保存这样一种信息:一个 key 对应了一个数据集合。我举几个例子。 手机 App 中的每天的用户登录信息:一天对应一系列用户 ID 或移动设备 ID; 电商网站上商品的用户评论列表:一个商品
2024-09-16
“万金油”的String,为什么不好用了? “万金油”的String,为什么不好用了?
从今天开始,我们就要进入“实践篇”了。接下来,我们会用 5 节课的时间学习“数据结构”。我会介绍节省内存开销以及保存和统计海量数据的数据类型及其底层数据结构,还会围绕典型的应用场景(例如地址位置查询、时间序列数据库读写和消息队列存取),跟你
2024-09-16
切片集群:数据增多了,是该加内存还是加实例? 切片集群:数据增多了,是该加内存还是加实例?
我曾遇到过这么一个需求:要用 Redis 保存 5000 万个键值对,每个键值对大约是 512B,为了能快速部署并对外提供服务,我们采用云主机来运行 Redis 实例,那么,该如何选择云主机的内存容量呢? *我粗略地计算了一下,这些键值对所
2024-09-16
哨兵集群:哨兵挂了,主从库还能切换吗? 哨兵集群:哨兵挂了,主从库还能切换吗?
上节课,我们学习了哨兵机制,它可以实现主从库的自动切换。通过部署多个实例,就形成了一个哨兵集群。哨兵集群中的多个实例共同判断,可以降低对主库下线的误判率。 但是,我们还是要考虑一个问题:如果有哨兵实例在运行时发生了故障,主从库还能正常切换吗
2024-09-16
哨兵机制:主库挂了,如何不间断服务? 哨兵机制:主库挂了,如何不间断服务?
上节课,我们学习了主从库集群模式。在这个模式下,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,进行相关的操作,但是如果主库发生故障了,那就直接会影响到从库的同步,因为从库没有相应的主库可以进行数据复制操作了。 而且,如果客户端
2024-09-16
数据同步:主从库如何实现数据一致? 数据同步:主从库如何实现数据一致?
前两节课,我们学习了 AOF 和 RDB,如果 Redis 发生了宕机,它们可以分别通过回放日志和重新读入 RDB 文件的方式恢复数据,从而保证尽量少丢失数据,提升可靠性。 不过,即使用了这两种方法,也依然存在服务不可用的问题。比如说,我们
2024-09-15
内存快照:宕机后,Redis如何实现快速恢复? 内存快照:宕机后,Redis如何实现快速恢复?
上节课,我们学习了 Redis 避免数据丢失的 AOF 方法。这个方法的好处,是每次执行只需要记录操作命令,需要持久化的数据量不大。一般而言,只要你采用的不是 always 的持久化策略,就不会对性能造成太大影响。 但是,也正因为记录的是操
2024-09-15
AOF日志:宕机了,Redis如何避免数据丢失? AOF日志:宕机了,Redis如何避免数据丢失?
如果有人问你:“你会把 Redis 用在什么业务场景下?” 我想你大概率会说:“我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。”没错,这确实是 Redis 的一个普遍使用场景,但是
2024-09-15
2 / 3