自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis 通过巧妙地使用数据结构节省内存空间(附 实验代码)

有了方面的知识,我们可以根据不同的场景来预估Redis会使用的内存容量。前言Redis数据结构容量评估的相关知识 ------ 想学的小伙伴可以移步Redis相关数据结构的容量评估那么这边博客就介绍一下,如果数据量达到千万甚至上亿级别时,该如何优化数据结构,节省内存空间。Redis 数据结构和编码方式继续回顾一下这张图,为什么Redis要对这些数据结构,分别设置多种编码方式(底层数据结构实现)呢?肯定是有原因的,因为随着数据量的上涨,或者存储的键值本身的大小变化,都会影响到对应编码方式的选择,

2020-09-30 17:07:17 1585 1

转载 Redis 相关数据结构的容量评估

作者:LeiLv链接:https://www.jianshu.com/p/5c5dc0d7d776来源:简书1.jemalloc 内存分配模型jemalloc基于申请内存的大小把内存分配分为三个等级:small,large,huge:Small Object 的size以8字节,16字节,32字节等分隔开,小于页大小;Large Object 的size以分页为单位,等差间隔排列,小于chunk的大小;Huge Object 的大小是chunk大小的整数倍。对于64位系统,一般chunk.

2020-09-28 19:45:16 2275

原创 Redis 底层结构和对象介绍 超级详细!!

本文主体参考Redis设计与实现第二版 对于有时间的同学可以直接阅读原书,我这里做一个详细的总结,并结合自己的一些思考。1.SDSRedis没有直接使用C语言传统的字符串,而是自己构建一个简单动态字符串(SDS),并将SDS作未Redis的默认字符串表示。reids>SET msg "hello world"会在Redis创建一个新的键值对:key是一个字符串对象,对象的底层是一个保存"msg"的SDSvalue也是一个字符串对象,底层同样是保存 "hello world"的SDS.

2020-09-24 19:12:28 409

原创 Django model 中get和filter的区别 超级详细!!

对于简单的SQL语句,我们还是可以直接使用Django自带的ORM框架,来简化代码的。那么对于查询语句,get()和filter()的区别让我在项目里吃了不少苦头,经常遇到bug,不知不觉就指向了这两个问题,所以今天我准备好好的总结一下相关区别。我就结合Django官方文档中给出的定义和我自己的一些理解进行介绍:get()不使用缓存These methods do not use a cache (see Caching and QuerySets). Rather, they query t

2020-09-22 12:57:21 824

原创 MySQL 表存储方式之索引组织表和堆表

索引组织表(Index-Organized Tables)索引组织的表具有B树的变体的存储组织。以主键排序的方式将索引组织表的数据存储在B树索引结构中。索引结构中的每个叶块都存储关键字列和非关键列。对应的主键索引也叫聚集索引,其他列的索引叫secondary index,也叫做二级索引。二级索引的每条记录都包含该行的主键值,InnoDB使用这个主键值来搜索聚集索引中的行。因此,较短的主键值是有利的,可以缩小二级索引的空间。聚集索引 clustered index每个表都有一个聚集索引,其实上面所说的主

2020-09-21 20:34:54 838

原创 MySQL 为什么InnoDB要使用B+ Tree索引

前言一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级**,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的渐进复杂度。**换句话说,索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数。一.内存读取简单点说说内存读取,内存是由一系列的存储单元组成的,每个存储单元存储固定大小的数据,且有一个唯一地址。当需要读内存时,将地址信号放到地

2020-09-21 19:48:10 434

原创 MySQL 插入时间时不是用的默认缺省值而是NULL,且后续更新不会改变时间。

项目中有一个bug,明明MySQL中update_time的缺省值为CURRENT_TIMESTAMP,但是第一次插入的时候总是为NULL,后续也不会更新。问题一:初始插入时 时间字段为null但是初始的时候为什么为NULL呢?因为项目中后端用到了Django 的ORM框架,其中的model模型定义如下在DateTimeField中参数设置blank为True,null为True关于这两个字段详细的介绍可以参考django数据模型中null和blank的区别说明我这里总结一下:null默认

2020-09-17 14:26:02 1949

原创 MySQL 什么时候使用INNER JOIN 或 LEFT JOIN

在本科时期,其实这个问题困扰了我很久,最早都是用如下语句,也就是笛卡尔积的形式。select **from A,Bwhere A.name=B.name再熟悉了各种联表以后其实这就是cross join,是最慢的一种联表方式,会返回A表字段的数据*B表字段的数据(如果A表有10条数据,B表有20条数据,那么最后返回结果就是200条)。其实可以根据真实的需求用更好的联表操作,如left join 或inner join。红烧排骨饭博客中给出的例子很容易理解商品表CREATE TABLE pr

2020-09-07 18:11:25 2996 2

空空如也

空空如也

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

TA关注的人

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