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

学做网站需要多久时间哪家公司做网站不错

学做网站需要多久时间,哪家公司做网站不错,国外网站后缀,南宁企业网站建设Redis 是一个广泛使用的内存数据库#xff0c;以其高性能和丰富的数据结构而闻名。不同于磁盘数据库#xff0c;磁盘数据库将数据读取到文件中维护#xff0c;而内存数据库将数据存储在内存中#xff0c;意味着其想要维护数据#xff0c;必须在代码中维护一个保存数据的结…Redis 是一个广泛使用的内存数据库以其高性能和丰富的数据结构而闻名。不同于磁盘数据库磁盘数据库将数据读取到文件中维护而内存数据库将数据存储在内存中意味着其想要维护数据必须在代码中维护一个保存数据的结构而redis由c语言编写对应的其一定是通过结构体来保存数据的结构。 redisDb结构体 在redis源码中每个redisDb结构体代表着一个数据库结构体大致如下 typedef struct redisDb {dict *dict; dict *expires; dict *blocking_keys; dict *ready_keys; dict *watched_keys; int id; long long avg_ttl; unsigned long expires_cursor; } redisDb; 让我们来一个一个解释其意义 dict 数据字典其中保存了所有存入的数据在redis中没有表的概念数据作为键值对存储直接存入数据库中以hash表的结构存储我在讲解redis中五个基本数据类型中详细讲解了hash表的结构想了解可以看我的这篇文章Redis五种数据类型底层存储数据结构以及相关命令。 expire 这也是一个数据字典不同的是其存储的是key和其对应的过期时间时间戳。将过期时间单独存储有利于redis便利key查找过期key有的key不设过期时间单独存储可以防止便利这些没有过期时间的key blocking_keys 这仍然是一个数据字典其中保存的是正在阻塞等待中的key比如说一个客户端对一个list数据使用了blpop命令但list没有数据此时客户端就会进入阻塞状态等待list插入数据当多个客户端都对一个空的list使用blpop命令那么则需要一个结构来维护他们的先后关系blocking_keys的作用就是维护阻塞key和等待其数据的客户端的先后关系。 ready_keys 这也是一个数据字典当blocking_keys中维护的key有新数据插入时每次插入数据都会检查是否包含在blocking_keys中会讲对应的key放入ready_keys中等待当前事件循环中的插入数据操作完成后在便利ready_key获取key并且根据这个key在block_keys和dict中获取客户端和值并且发送高并发情况下一次会有大量的插入操作先执行完当前事件循环的插入操作并且放入ready_keys中插入操作完成后再统一返回给客户端。当使用publish发布订阅消息时订阅消息也会放入ready_keys中与blpop不同的是所有订阅这个消息的客户端都会收到这个消息没有先后顺序一分所以不需要维护客户端的先后关系也就不需要进入block_keys。 watched_keys 当我们使用redis开启一个事务时我们需要先确定这个事务依赖于哪些key然后通过watch key1 key2 ... 的命令来监控这些key那么当前这个事务就会作为这些key的value被保存在watched_keys中当对key进行修改操作时会去查看watch_keys中是否有这个key如果有则将key对应的全部事务进行取消。并且便利watched_keys将其他key中保存的当前事务删除。 id: 唯一id没什么好说的。 avg_ttl 保存expire中保存的过期时间的平均值每当平均时间改变时都要重新计算一次。 expires_cursor 当前便利位置的游标redis内存淘汰过程中需要便利检查key是否过期不过大量的key一次性遍历势必会造成程序卡顿为了防止这种情况在周期性模式下一次性会检查一部分key然后保存当前位置作为游标下次检查时会接着游标的位置继续遍历。 结构体示意图如下 redisObject 我们在redisDB结构体的中dict数据字典中保存的都是key和数据而数据的结构则是redisObject同redisDB一样redisObject也是一个结构体代码如下 typedef struct redisObject {unsigned type:4; unsigned encoding:4; unsigned lru:LRU_BITS; int refcount; void *ptr; };type 对象类型也就是redis五大基本数据类型以及两个高级数据类型bitmap和hyperloglog底层是string类型而geo底层是zset类型其中包括REDIS_STRINGREDIS_LISTREDIS_SETREDIS_ZSETREDIS_HASHREDIS_MODULEREDIS_STREAM encoding 编码方式简单来说redis基本数据类型的保存也要精心设计来提高其内部属性的操作性能因为一个基本数据类型内部也保存了大量的元素或键值对而编码方式就是某个类型用了什么样的数据结构来保存其内部的键值对或元素其中包括SDS整数列表压缩列表双向链表快速列表hash表跳表。想了解更多可以看我的另一个文章Redis五种数据类型底层存储数据结构以及相关命令https://blog.csdn.net/dxh9231028/article/details/140824108 lru 在基于LRU算法的内存淘汰策略下保存过期时间戳在基于LFU算法德内存淘汰策略下保存的时一个代表访问频率高低整数不是访问次数想了解具体内容可以看我的另一篇帖子redis-过期key删除内存淘汰策略内存碎片化处理https://blog.csdn.net/dxh9231028/article/details/138451287?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22138451287%22%2C%22source%22%3A%22dxh9231028%22%7D refcount 引用计数用于内存管理。当引用计数为 0 时表示没有任何地方引用该对象内存可以被回收。 ptr 指向实际数据值的指针。实际数据的类型和结构取决于 type 和 encoding 字段的值。比如说如果是string类型那么就可以指向一个SDS结构体的对象如果是hash类型有可能会指向一个hash表等等。
http://www.hkea.cn/news/14425677/

相关文章:

  • 企业网站宣传怎么用wordpress建立自己的网站吗
  • 山东省建设注册执业中心网站做网站学哪种代码好
  • 沈阳网站建设活动方案免费做网站软件下载
  • 网站开发代码语言沈阳网站排名工具
  • 网站开发前期方案唐山自助建站软件
  • 柳州建站公司南宁市建设工程信息网
  • jsp的网站电子商务网站建设汉狮
  • 网站技术报务费如何做会计分录零距离seo
  • 门户网站建站方案百度域名对应的ip地址
  • 通城做网站的做网站的ui框架
  • 合肥专业做淘宝网站推广南京网站开发南京乐识优
  • 网站建设推广有用吗wordpress删除数据库数据表
  • 湛江仿站定制模板建站wordpress网站如何清理js
  • 网站建设中网站需求分析报告内容龙岗网站建设公司哪家口碑好
  • 公司注册网站开发的行业表述心理健康教育网站建设
  • 网站主办者什么意思名片制作app软件
  • 做淘宝客为什么要建网站广州seo报价
  • 做网站要怎么备案湖南网站设计外包服务
  • 成都旅游网站建设规划方案网站代码生成网站
  • 做那个网站大全买完网站怎么建设
  • 重庆价格低建设网站公司移动网站屏蔽
  • 如何优化自己的网站屏幕分辨率 网站开发
  • 大连市城乡建设厅网站windows永久禁止更新
  • 化妆品网站建设预算明细表嵌入式软件开发价格
  • 做网站公司那家好济南品牌网站建设低价
  • 青白江网站建设wordpress对接熊掌号
  • 开网站做淘宝客做网站怎么与客户谈判
  • 网站建设7大概要多久饥荒网站这么做
  • 河北唐山网站建设江西旺达建设工程有限公司网站
  • 做类似淘宝网站怎么做的门户网站主要特点和功能