当前位置: 首页 > news >正文

介绍好看的电影网站模板免费下载贵州省住房和城乡建设局网站首页

介绍好看的电影网站模板免费下载,贵州省住房和城乡建设局网站首页,诚信网站建设的意义,酒店网站建设公司关于Redis操作(添加、删除、修改、查询)String类型key的完整过程,包括引用源码数据、时序图、磁盘IO读写、数据长度限制和故障处理机制。 数据结构 Redis对象(robj) typedef struct redisObject {unsigned type:4; …

关于Redis操作(添加、删除、修改、查询)String类型key的完整过程,包括引用源码数据、时序图、磁盘IO读写、数据长度限制和故障处理机制。


数据结构

Redis对象(robj

typedef struct redisObject {unsigned type:4;          // 对象类型(如字符串)unsigned encoding:4;      // 对象的编码方式(如 RAW、INT、EMBSTR)unsigned lru:LRU_BITS;    // LRU 时间戳,用于过期和淘汰策略int refcount;             // 引用计数,用于内存管理void *ptr;                // 指向实际数据的指针
} robj;

时序图

以下是Redis操作String类型key的时序图:

Redis Client Redis Server SET mykey "Hello" EX 60 OK GET mykey Hello SET mykey "New Value" OK DEL mykey 1 Redis Client Redis Server

(一)添加String类型key

1. 客户端发送命令

客户端通过Redis客户端库(如redis-cli或编程语言的Redis客户端)发送SET命令,格式为:

SET key value [EX seconds] [PX milliseconds] [NX|XX]

例如:

SET mykey "Hello" EX 60

此命令将值"Hello"存储到键mykey中,并设置其过期时间为60秒[45]。

2. 服务器处理命令

Redis服务器接收到SET命令后,执行以下操作:

  • 检查键是否存在:如果命令中包含NX选项(不存在时才设置),服务器会检查键是否已存在。如果键已存在,则返回错误[45]。
  • 创建或更新键值对:如果键不存在,服务器会创建一个新的键值对;如果键已存在,服务器会更新键的值[45]。
3. 数据存储过程
  • 键的存储:键通过字典(Dictionary)存储,字典基于哈希表实现。键的哈希值被计算并映射到哈希表中的一个槽(slot)[48]。

  • 值的存储:值被封装为Redis对象(robj

    对于String类型的值,ptr指向一个SDS(Simple Dynamic String)对象[48]。

4. 设置过期时间(可选)

如果命令中包含EXPX选项,Redis会为键设置过期时间:

  • EX选项设置过期时间为秒级[45]。
  • PX选项设置过期时间为毫秒级[45]。
5. 返回结果

命令执行完成后,Redis服务器返回结果:

  • 如果设置成功,返回OK[45]。

(二)删除String类型key

1. 客户端发送命令

客户端发送DEL命令删除键:

DEL key
2. 服务器处理命令

Redis服务器接收到DEL命令后:

  • 查找指定的键,如果键存在,则从字典中删除该键[43]。
  • 如果键不存在,返回0;如果删除成功,返回1[43]。
3. 数据删除过程
  • Redis通过字典的dictDel函数删除键值对。如果键对应的值是大对象(如大字符串),可以使用UNLINK命令异步删除,避免阻塞主线程[46]。
4. 返回结果

命令执行完成后,Redis返回删除的键的数量[43]。


(三)修改String类型key

1. 客户端发送命令

客户端发送SET命令更新键的值:

SET key new_value
2. 服务器处理命令

Redis服务器接收到SET命令后:

  • 如果键已存在,更新键的值[45]。
  • 如果键不存在,创建新的键值对[45]。
3. 数据更新过程
  • 键值对的更新通过字典的dictReplace函数完成[48]。
  • 如果键对应的值是大对象,可以使用SETRANGE命令修改部分值[47]。
4. 返回结果

命令执行完成后,Redis返回OK[45]。


(四)查询String类型key

1. 客户端发送命令

客户端发送GET命令查询键的值:

GET key
2. 服务器处理命令

Redis服务器接收到GET命令后:

  • 查找指定的键,如果键存在,返回键的值[47]。
  • 如果键不存在,返回nil[47]。
3. 数据查询过程
  • Redis通过字典的dictFind函数查找键,并返回对应的值[48]。
4. 返回结果

命令执行完成后,Redis返回键的值[47]。


持久化

Redis主要是一个内存存储系统,但为了持久化数据,它支持以下两种持久化机制:

(一)RDB(Redis Database File)

  • RDB是Redis的快照持久化机制,它会定期将内存中的数据写入磁盘,生成一个RDB文件[50]。
  • 当添加或更新String类型的键值对时,Redis会根据配置的策略(如save选项)触发RDB持久化[50]。

(二)AOF(Append Only File)

  • AOF是Redis的追加文件持久化机制,它会将每个写操作追加到AOF文件中[50]。
  • 当执行SET命令时,Redis会将该操作追加到AOF文件中[50]。

数据长度限制

Redis对String类型key的值大小有限制:

  • 单个String类型的值最大长度为512MB[49]。
  • 如果值超过512MB,可能会导致性能问题或内存不足[49]。

优化建议:

  • 对于较大的值,可以采用压缩算法进行压缩,减小值的大小[49]。
  • 使用Redis集群将数据分布在多个节点上,增加总的内存容量[49]。

故障处理机制

(一)大Key删除

  • 同步删除:使用DEL命令直接删除大Key,可能会阻塞主线程[46]。
  • 异步删除:使用UNLINK命令异步删除大Key,Redis会在后台逐步释放内存[46]。

(二)内存不足

  • 如果Redis内存不足,可以配置maxmemory策略,自动淘汰旧数据[50]。
  • 使用MEMORY PURGE命令释放未使用的内存[50]。

(三)数据丢失

  • 启用RDB和AOF持久化机制,确保数据在故障时能够恢复[50]。

接口

Redis操作String类型key的过程包括:

  1. 添加:通过SET命令创建或更新键值对,支持过期时间设置。
  2. 删除:通过DELUNLINK命令删除键。
  3. 修改:通过SETSETRANGE命令更新键的值。
  4. 查询:通过GET命令获取键的值。

Redis通过高效的哈希表和动态字符串结构,实现了快速的键值操作。同时,通过RDB和AOF机制,Redis确保了数据的持久化。对于大Key和内存不足等问题,Redis提供了多种优化和故障处理机制,保证系统的稳定性和性能。

http://www.yayakq.cn/news/955674/

相关文章:

  • 自己切片做网站搜索引擎优化的缺点包括
  • 南京 做网站微信公众号里的网站怎么做的
  • 商户网站建设公司军事新闻播报最新
  • 高端网站建设的市场分析如何用wordpress做企站
  • 本地网站构建浦口区建设中学网站
  • 基于php网站开发步骤五通桥移动网站建设
  • 国税网站建设管理做网站例子图片描述
  • 网站地市频道建设wordpress音乐页面下载
  • 如何设置网站标题给了几张图让做网站
  • 如何免费申请网站做网站的岗位叫什么问题
  • 人是用什么做的视频网站做商城类网站备案时需提供什么证件
  • 如何设置wordpress静态页面资源网站优化排名
  • thinkphp 大型网站开发地方信息网站怎么做
  • 网站前端交互功能案例分析云主机怎么做网站
  • 国内建筑设计网站网站app怎么制作教程
  • 徐闻网站建设公司汉中网站seo
  • 陕西哪些公司做企业网站网络营销推广及优化方案
  • 刚做的网站关键字能搜到么如何自己做淘宝客网站
  • 城市建设招标网站网站群管理平台方案
  • 如何做域名网站网站炫酷首页
  • 怎么自己做网站游戏连云港做网站多少钱
  • 广西营销型网站公司c2c交易平台官网
  • 做淘宝联盟网站用数据库吗英文网站建设公司
  • 笑话小网站模板html抖音代运营公司布马网络
  • 360做的网站东阳市建设规划局网站
  • 网站建设与管理期末网站建设项目分期
  • 仓库管理系统er图网站优化做些什么
  • 安丘网站建设开发优秀设计网站大全
  • 江门建站软件语言网站开发
  • 郑州营销型网站建设哪家好淘宝运营培训内容