Redis
cs架构娃
这个作者很懒,什么都没留下…
展开
-
极客时间-Redis核心技术与实战笔记(5)-主从库如何实现数据一致
Redis高可靠性指数据尽量少丢失,服务尽量少中断。AOF和RDB解决数据少丢失,增加数据副本(主从库)解决服务少中断。多个实例下数据如何保持一致?主从库,读操作可以操纵主库和从库。写操作操纵主库,主库将数据同步从库。主从库数据同步如何完成?通过replicaof形成主从库关系。建立连接,协商同步。从库给主库发psync(runID = ?, offset = -1),主库根据参数启动复制。通过FULLRESYNC(代表全量复制)相应新的参数。主库将所有数据同步从库,依赖RDB文件(bgsa原创 2021-11-09 18:18:05 · 696 阅读 · 0 评论 -
极客时间-Redis核心技术与实战笔记(4)
宕机,Redis如何避免数据丢失?Redis是工作在内存中的键值数据库,服务器宕机后存在数据丢失的问题。一种解决方法是从后端数据库恢复数据。上述解决方法存在的问题:每次出现问题都需要访问数据库拷贝大量数据,给数据库带来巨大压力(这里有点疑惑,宕机很少出现,作者却说需要频繁访问数据库。访问数据不都是通过Redis吗?)。宕机后数据从慢速数据库读取,使用这些数据的应用相应变慢。解决方法:数据持久化。持久化两大机制:AOF(Append Only File)日志,RDB快照。AOF日志实现:应用程序从原创 2021-11-07 10:49:07 · 571 阅读 · 0 评论 -
极客时间-Redis核心技术与实战笔记(3)
为什么单线程Redis那么快?大部分操作在内存完成,高效的数据结构,采用I/O多路复用。为什么Redis不使用多线程?多线程访问共享资源使用的互斥机制会带来额外的开销。使用单线程是Redis在性能方面综合考虑所作出的选择。什么是单线程Redis?单线程Redis指对Redis进行网络I/O和键值对读写由一个线程完成。Redis是单线程的吗?有没有用到多线程?Redis持久化,异步删除,集群数据同步是由其他线程完成的。之后讲了Linux网络编程的一些IO多路复用的知识。...原创 2021-11-05 11:29:30 · 426 阅读 · 0 评论 -
极客时间-Redis核心技术与实战笔记(2)
首先老师提出一个问题:Redis的快,快在哪里?内存数据库,所有操作在内存完成。键值对使用的高效的数据结构。老师用了一张图详细的展示了Redis的不同类型的数据底层所用的数据结构:上述数据结构都是值的底层实现。键和值用什么结构组织:使用哈希表(一个数组)保存所有键值对。值是集合类型如何保存?哈希表中保存指向具体值的指针。使用哈希表可以用O(1)时间复杂度快速查找到键值对。潜在风险:hash冲突,rehash可能的操作阻塞。解决hash冲突:链式hash。链式hash存在的问题:原创 2021-11-04 20:25:34 · 226 阅读 · 0 评论 -
极客时间-Redis核心技术与实战笔记(1)
对一个大型软件系统的更好的学习方式:先建立起系统观,再关注具体的细枝末节。先考虑简单的键值数据库架构:理解数据模型和操作接口,知道Redis可以做什么,不能做什么。数据模型:key-value类型,key类型对于不同数据库一般差别不大。value类型:Memcached仅支持string类型,Redis支持多种类型。不同数据类型支撑不同业务需求,在性能空间效率等方面有差异。数据操作:简单的key-value1支持三种操作:PUT, GET,DELETEPUT:写入或更新key-value原创 2021-11-03 20:38:02 · 896 阅读 · 2 评论