redis
Bailoading
这个作者很懒,什么都没留下…
展开
-
redis学习(十一) --- redis的应用及开发中遇到的问题
前面的博客我们学习了redis的基础知识,现在来看下redis在实际的使用以及实际中的一些问题。分布式锁 分布式锁的概念:当多个进程不在同一个系统中,用分布式锁控制多个进程对资源的访问。在分布式的环境下,线程A和线程B不在同一个jvm中,这时线程锁就没有了作用,需要使用分布式锁。使用分布式锁需要注意下面几点:任意时刻,只能有一个线程拥有锁 不会发生死锁。使用redis实...原创 2020-03-03 23:34:23 · 161 阅读 · 0 评论 -
redis学习(十)--- 与memcache区别
什么是memcache? memcahce是高性能的分布式内存缓存服务器,也是一个key-valu的内存缓存服务器。但是memcahce是存在内存中的,所以发生断电或者故障会导致数据的丢失。memcache的内存分配原理 采用slab Allocato的机制进行内存的分配和管理,其基本原理是按照预先规定的大小,将内存分为特定长度的块,以解决内存碎片问题。其中,chunk为分...原创 2020-02-29 20:41:29 · 112 阅读 · 0 评论 -
redis学习(九)---- 分片
redis集群是redis提供的分布式数据库方案,集群通过分片进行数据共享。槽指派 一个redis集群由多个节点组成,集群通过分片的方式保存数据的键值对,集群的整个数据库被分为16384个槽(slot),当数据库的所有的槽都有节点在处理的时候,集群处于上线状态,否则,只要有任何一个槽没有得到处理,那么认为集群处于下线状态。比如一个集群中有三个节点A,B,C,通过向节点发送cl...原创 2020-02-29 13:12:26 · 87 阅读 · 0 评论 -
redis学习(八)--- 哨兵
哨兵是redis高可用性的解决方案,由一个或者多个哨兵实例组成的哨兵系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器处理命令。哨兵的实现流程哨兵集群通过配置发现maste,同时会监控master,同时以一定的频率向master发送IN...原创 2020-02-28 22:43:52 · 77 阅读 · 0 评论 -
redis学习(七) --- 主从同步
在redis主从架构中,Master负责写请求,slave负责处理读请求。但是是如何保持主从一致性的呢?接下来我们了解redis主从同步。主从同步 主从同步主要分为了两个操作,一个是同步,另一是命令传播同步:将从数据库的数据库状态更新至主服务器当前所处的数据库状态 命令传播:当主服务器的状态修改,导致主从不一致,让主从服务器的数据库重新回到一致同步 分为了完整...原创 2020-02-28 00:05:49 · 122 阅读 · 0 评论 -
redis学习(六)--- 命令执行的过程
一个命令请求从发送到获得回复,客户端与服务端需要执行一系列的操作。比如一条简单的set key value命令,客户端与服务端需要:客户端向服务端发送命令set key value 服务端接受命令并处理客户端的请求,产生命令回复OK 服务端将命令回复OK发送给客户端 客户端接受命令回复OK发送命令请求 用户输入命令,客户端会将命令转换成协议格式,然后通过连接到服务器的套接...原创 2020-02-26 23:59:32 · 93 阅读 · 0 评论 -
redis学习(五) --- 事件
redis服务器是一个事件驱动程序,服务器需要处理两种事件类型:文件事件:redis服务器通过套接字与客户端连接,而文件事件就是服务器对套接字的抽象,服务端则通过监听和处理事件来完成网络通信 时间事件:在给定的时间执行的事件文件事件 redis基于rector模式处理网络事件,称为文件事件处理器。 如图中,文件事件处理器的四个部分:套接字:每当一个套接字准备好...原创 2020-02-25 00:03:06 · 98 阅读 · 0 评论 -
redis学习(四) --- 持久化
redis为数据的持久化提供了两种方式RDB和AOF。RDB:保存把某个时间节点时的数据全量快照 AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据RDB 有两个redis命令可以用于生产RDB文件。SAVE:会阻塞redis服务器的进程,知道RDB文件创建完毕,在服务器进程阻塞期间,服务器不能处理任何命令请求 BGSAVE:会派...原创 2020-02-22 16:56:25 · 69 阅读 · 0 评论 -
redis 学习(三) --- 过期策略
在开发中我们经常使用redis作为缓存,就不可避免的需要设置key的存活时间(命令:expire key TTL),redis会在指定的时间之后自动删除过期的键值对。但是redis是如何记录过期时间,以及过期后是怎样删除键值对的呢?我们接下来慢慢了解。过期时间的存储 在了解过期时间的存储之前,我们先了解一下redis的数据库的结构。redis服务器将所有的数据库保存在redis...原创 2020-02-20 23:32:53 · 142 阅读 · 0 评论 -
redis学习(二) --- 对象
在前面的笔记中,我们介绍了redis中主要的数据结构:SDS,链表,字典,压缩列表等。但是并没有直接使用这些数据结构来提供键值对,而是通过我们常用的字符串、列表、哈希、集合和有序集合提供服务。对象类型和编码 每当我们在创建一个新的键值对的时候,我们会创建至少两个对象,一个用于键值对的键,一个用于键值对的值。redis中的对象都有一个redisObject对象。主要包含以下属性:...原创 2020-02-19 23:20:35 · 78 阅读 · 0 评论 -
redis学习(一) --- 数据结构
redis作为日常开发中常用的组件,在深入了解之前,我们先简单的来了解一下其对象以及对象的底层数据结构。数据结构 在了解redis常用的对象之前,我们首先了解一下器底层实现的数据结构。简单动态字符串 在redis数据库中,包含字符串的键值对在底层都是由SDS来实现。struct sdshdr{ int len;//为SDS所保存的字符串的长度,也就...原创 2020-02-17 21:18:28 · 64 阅读 · 0 评论