自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Redis--事务

Redis通过MULTI、EXEC、WATCH等命令来实现事务功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。MULTI命令:开始事务,把命令放入事务中。MULTI命令可以将执行该命令的客户端从非事务状态切换至事务状态,这一切换是通过在客户端状态的flags属性中打开REDIS_MULTI标识来完成的。Re...

2021-08-18 19:34:21 160

原创 Redis--发布与订阅

Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE、PUBSUB等命令组成。SUBSCRIBE命令:客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber),每当有其他客户端向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息。PSUBSCRIBE命令:除了订阅频道之外,客户端还可以通过执行PSUBSCRIBE命令订阅一个或多个模式,从而成为这些模式的订阅者:每当有其他客户端向某个频道...

2021-08-18 19:03:36 272

原创 Redis--集群

Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。集群方案的特点是高并发。节点一个Redis集群通常由多个节点(node)组成,一个节点就是一个运行在集群模式下的Redis服务器,Redis服务器在启动时会根据cluster-enabled配置选项是否为yes来决定是否开启服务器的集群模式。在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,必须使用CLU.

2021-08-17 20:28:43 143

原创 Reids-哨兵模式

Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。Sentinel系统和Redis服务器主服务器下线故障转移原主服务器重新上线,变为新主服务器的从服务器启动并初...

2021-08-17 19:42:35 183

原创 Redis的主从复制

在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)...

2021-08-17 19:42:07 107

原创 Redis客户端、服务器

客户端创建Redis的客户端有三种,一是Lua伪客户端,二是AOF伪客户端,三是通过网络连接的普通客户端。Lua伪客户端:服务器会在初始化时创建负责执行Lua脚本中包含的Redis命令的伪客户端,并将这个伪客户端关联在服务器状态结构的lua_client属性中。lua_client伪客户端在服务器运行的整个生命期中会一直存在,只有服务器被关闭时,这个客户端才会被关闭。 AOF伪客户端:服务器在载入AOF文件时,会创建用于执行AOF文件包含的Redis命令的伪客户端...

2021-08-13 16:59:35 205

原创 Redis事件

Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:·文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。·时间事件(time event):Redis服务器中的一些操作(比如serverCron函数)需要在给定的时间点执行,而时间事件...

2021-08-11 23:47:59 177

原创 Redis持久化--RDB和AOF

Redis是内存数据库,它把数据都存在内存中,一旦服务器宕机或关闭,那Redis数据库里的数据就会消失。因此,Redis提供了RDB和AOF两种持久化方式,将数据保存到磁盘中。RDB持久化RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。RDC持久化通过SAVE和BGSAVE命令执行。SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,...

2021-08-11 23:47:27 143

原创 Redis数据库

数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库,有16个数据库。每个Redis客户端都有自己的目标数据库,每当客户端执行数据库写命令或者数据库读命令的时候,目标数据库就会成为这些命令的操作对象。默认情况下,Redis客户端的目标数据库为0号数据库,但客户端可以通过执行SELECT命令来切换目标数据库。数据库健空间...

2021-08-08 17:47:16 93

原创 Redis的五种对象

虽然前面介绍过一些Redis的数据结构,但在Redis中,真正的数据类型都是对象,Redis有五种对象,对象的底层实现都是之前介绍过得Redis一些数据结构。Redis对象底层会在不同的情况下使用不同的数据结构,提高了Redis的灵活性和使用效率。 Redis也五种对象,分别是字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象。每种对象都用到了至少一种我们前面所介绍的数据结构。...

2021-08-06 17:41:39 339

原创 Redis数据结构--压缩链表

压缩列表是一种为节约内存而开发的顺序型数据结构。压缩链表用于存储小整数值,或者长度比较短的字符串。压缩链表的结构压缩列表节点的结构previous_entry_length属性以字节为单位,记录了压缩列表中前一个节点的长度。previous_entry_length属性的长度可以是1字节或者5字节。如果前一节点的长度小于254字节,那么previous_entry_length属性的长度为1字节:前一节点的长度就保存在这一个字节里面。如果前一节点的长度大于等...

2021-08-04 20:13:31 1612

原创 Redis数据结构--整数集合

整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_t、int32_t或者int64_t的整数值,并且元素是有序(从小到大)、不重复的。整数集合的实现整数集合源码:注:虽然intset结构将contents属性声明为int8_t类型的数组,但实际上contents数组并不保存任何int8_t类型的值,contents数组的真正类型取决于encoding属性的值:如果encoding属性的值为INTSET_ENC_INT16,那...

2021-08-03 20:30:07 426

原创 Redis数据结构--跳跃表

跳跃表(skiplist)是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表查询节点的时间复杂度平均O(logN),最坏O(N)。在大部分情况下,跳跃表的效率可以和平衡树媲美,而且实现比平衡树简单,因此有不少的程序使用跳跃表来代替平衡树。跳跃表的实现Redis的跳跃表由zskiplistNode和zskiplist两个结构定义,其中zskiplistNode结构用于表示跳跃表节点,而zskiplist结构则用于保存跳跃表节点的相关信...

2021-08-03 20:10:06 192

原创 Redis数据结构--字典

阿萨德

2021-08-02 20:09:06 154

原创 Redis数据结构--链表

链表由链表节点组成链表节点源码:链表源码:链表结构:链表特点: 1.双向,获取某个节点的前置或后置节点时间复杂度为O(1)。2.无环,头节点的pre和尾节点的next都指向null。3.带表头和表尾,获取表头节点和尾节点时间复杂度尾O(1)。4.带表长度,获取表长度时间复杂度为O(1)。 5.多态:可以保持不同类型的值。...

2021-08-02 20:03:51 115

原创 Redis数据结构——SDS

Redis支持五种数据类型,分别是字符串、列表、哈希表、集合、有序集合。其中字符串的实现结构是SDS。SDS结果源码如下图。在C语言中,字符串的底层结构是一个字节数组,而SDS结构有一个字节数组,还有一个len属性,记录字符串的长度;还有一个free属性,代表字符串的未使用空间。SDS与C语言的字符串相比有什么好处?1、获取长度为时间复杂度为O(1)C字符串获取长度时,需要从头遍历字节数组,时间复杂度为O(N);SDS获取长度时,只需要返回len的值即可,...

2021-07-30 20:03:16 371

原创 SSO单点登录原理

当我们进入一些应用系统(如天猫,淘宝)时,往往需要用户先进行登录才能有权限进行操作,而一些比较大型的应用往往有多套系统(例如天猫、淘宝为两套不同的系统,但是共用同一个账户),这就出现一个问题,是不是用户每次进入系统都要让用户进行登录?这无疑会给用户造成不好的体验,于是SSO(单点登录)就出现了。SSO英文全称Single SignOn,单点登录。SSO是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 SSO实现机制 ...

2021-07-24 15:20:43 159

原创 URL中特殊字符的转义

在URL中,某些字符代表特殊的含义,所以当我们的URL中包含有这些字符时,需要对这些字符进行转义。下图是一些常用URL字符的转义规则。特殊字符 代表含义 转义字符 ? 分隔实际URL和参数 %3F / 分隔目录和子目录 %2F % 指定特殊字符 %25 # 指定书签 %23 & 分隔参数 %26 = 指定参数的值 %3D ...

2021-07-24 12:05:26 2748

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除