
数据库、MYSQL、Redis
文章平均质量分 70
aa
Bread Sir
记录算法之路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis 设计与实现——对象
之前我们整理的内容是Redis用到的数据结构,但是Redis 并没有直接使用这些数据结构来实现键值对数据库, 而是基于这些数据结构创建了一个对象系统, 这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少一种我们前面所介绍的数据结构。 Redis 对象的类型与编码 Redis使用对象来表示数据库中的键和值,当创建一个键值对时,我们至少会创建两个对象,即键对象和值对象。 typedef struct redisObject { // 类型原创 2021-08-28 22:49:01 · 318 阅读 · 0 评论 -
Redis 设计与实现——跳跃表
跳跃表 跳跃表概述 跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。 Redis 使用跳跃表作为有序集合键的底层实现之一: 如果一个有序集合包含的元素数量比较多, 又或者有序集合中元素的成员(member)是比较长的字符串时, Redis 就会使用跳跃表来作为有序集合键的底层实现。 Redis 跳跃表的实现 跳跃表是一种可以对有序链表进行近似二分查找的数据结构,redis 在两个地方用到了跳跃表,一个是实现有序集合,另一个是在集群节原创 2021-08-27 10:35:48 · 319 阅读 · 0 评论 -
Redis 设计与实现——字典
字典 字典中,一个键key和一个值value关联起来,这称为键值对。 字典中的每个键都是独一无二的, 程序可以在字典中根据键查找与之关联的值, 或者通过键来更新值, 又或者根据键来删除整个键值对, 等等。 Redis字典的实现 Redis 的字典使用哈希表作为底层实现, 一个哈希表里面可以有多个哈希表节点, 而每个哈希表节点就保存了字典中的一个键值对。 哈希表 typedef struct dictht { dictEntry **table; // 哈希表数组 unsigned long原创 2021-08-05 17:57:05 · 275 阅读 · 0 评论 -
Redis 设计与实现——链表
链表 链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层实现。 redis> LLEN integers (integer) 1024 redis> LRANGE integers 0 10 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7" 8) "8" 9) "9" 10) "10" 11) "1原创 2021-08-05 14:29:45 · 164 阅读 · 0 评论 -
Redis 设计与实现——Redis简单动态字符串
Redis简单动态字符串 Redis不直接使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(SDS)的抽象类型。而在Redis中,C字符串只会作为字符串字面量。 redis> SET msg "hello world" OK 那么 Redis 将在数据库中创建了一个新的键值对, 其中: 键值对的键是一个字符串对象, 对象的底层实现是一个保存着字符串 "msg" 的 SDS 。 键值对的值也是一个字符串对象, 对象的底层实现是一个保存着字符串 "hello world" 的 SDS原创 2021-08-05 14:06:25 · 182 阅读 · 0 评论 -
高性能MySQL——第五章 创建高性能的索引
什么是索引? 索引在MySQL中也叫作“键 key”,它是存储引擎用于快速找到记录的一种数据结构。 当表中数据量越来越大,索引就非常重要!! 索引优化是对查询性能优化最有效的手段(可以提高几个数量级)。 索引基础 索引就像一本书的目录,想要理解索引,最简单的方法就是去看看《高性能MySQL》这本书的“索引”部分,找到对应的页码。 在MySQL中,存储引擎用类似的方法使用索引,其先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。 对于这段sql语句查询: SELECT first_name FR原创 2021-05-24 21:10:12 · 168 阅读 · 0 评论 -
高性能MySQL——第二章 MySQL 基准测试
基准测试是针对系统设计的一种压力测试,通常目标是为了掌握系统的行为。 为什么要基准测试? 验证基于系统的一些假设,确认这些假设是否符合实际情况。 重现系统中的某些异常行为,以解决这些异常。 测试系统当前运行情况。如果不清楚系统当前的性能,就无法确认某些优化的效果如何。也可以利用历史的基准测试结果来分析诊断一些无法预测的问题。 模拟比当前系统更高的负载,以找出系统随着压力增加而可能遇到的扩展性瓶颈。 规划未来的业务增长。 测试应用适应可变环境的能力。 测试不同的硬件、软件和操作系统配置。 证明新采购的设备配原创 2021-05-10 19:14:54 · 118 阅读 · 0 评论 -
高性能MySQL——第一章 MySQL 架构与历史
本章主要了解: MySQL的服务器架构 各种存储引擎之间的主要区别 这些区别的重要性 MySQL 逻辑架构 一共三层服务: 最上层并不是MySQL独有,大多基于网络的客户端/服务器的工具或服务都有类似架构。 第二层包含了大多数MySQL的核心服务功能。包括查询解析、分析、优化、缓存以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图。 第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API与存储引擎进行通信,存储原创 2021-05-09 20:21:28 · 312 阅读 · 4 评论 -
MySQL必知必会——第一部分简介
Chapter 1 了解SQL 1.1 数据库基础 1.1.1 什么是数据库? 保存有组织的数据的容器(通常是一个文件或一组文件)。 注意,与数据库软件(DBMS)不同。 1.1.2 表 某种特定类型数据的结构化清单。 存储在表中的数据是一个类型的数据或一个清单,不能混淆不同类型。 表都有自己的一个名字(唯一性)。 模式:关于数据库和表的布局及特性的信息。 1.1.3 列和数据类型 表由列组成。列中存储着表中某部分的信息。 列为表中一个字段。所有表都是由一个或多个列组成的。 数据库中每个列都有相原创 2020-08-18 15:20:27 · 121 阅读 · 0 评论 -
MYSQL查询实例
之前看到斌哥正在做老师发的数据库题目,开玩笑地说了一句:“这不是很简单吗???”,然而我前天开始做,就被打脸了,哪有我想象的那么简单啊QAQ!!间断地搞了一两天,终于把几个查询搞定了,现在应该没有什么太大的问题了!!表结构如下:Student(S,Sname,Sage,Ssex) 学生表Course(C,Cname,TNO) 课程表SC(S,C,score) 成绩表Teacher(T,Tname)原创 2017-06-02 16:34:15 · 640 阅读 · 0 评论 -
java与Mysql基础应用实例
这里拿一段代码直接进行分析:User类:package cn.edu.spu.stumis;public class User { String username; String password; String rolename; String name; public String getUsername() { return usernam原创 2017-06-09 19:36:10 · 355 阅读 · 0 评论 -
数据库设计
数据库设计概述:一般定义: 对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理 结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。信息管理要求指:在数据库中应该存储和管理哪些数据对象 数据操作要求指:对数据对象需要哪些操作,如增、删、改、查等操作。数据库设计的基本步骤 需求分析 概念结构设计 逻辑结构设计 物理结原创 2017-06-09 16:10:02 · 537 阅读 · 0 评论 -
数据库之——范式(最通俗易懂)
学习了两天的范式,虽然还有点迷迷糊糊,但是基本能够判断一个数据库属于第几范式了。先把几个术语描述一下: 实体:客观存在并可相互区别的事物称为实体。比如具体的人、物,也可以是抽象的概念或联系,如一个职工、学生、部门、学生的一次选课、部门的一次订货、教师与院系的工作关系等等。 属性:实体所具有的某一特性。属性是一个逻辑概念,比如说“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看原创 2017-06-07 14:46:11 · 986 阅读 · 4 评论 -
MySQL常用指令(三) 插入、更新与删除数据
一、插入数据1.为表中的所有字段插入数据INSERT INTO table_name (column_list) VALUES (value_list); 2.为表中的指定字段插入数据INSERT INTO table_name (指定字段) VALUES (相应的value_list); 3.同时插入多条记录INSERT INTO table_name (column_list) VALUE原创 2017-05-13 15:43:35 · 489 阅读 · 0 评论 -
MySQL常用指令(二)查询数据
1.基本查询语句SELECT {*|<字段列表>} [ FROM <表1>,<表2>... [WHERE <表达式> [GROUP BY <group by definition>] [HAVING <expression> [{<operator> <expression>...]] [ORDER B原创 2017-05-10 21:23:35 · 527 阅读 · 0 评论 -
MySQL常用指令(一)
一.创建数据库CREATE DATABASE database_name; 二.删除数据库DROP DATABASE database_name; 三.创建数据表1.语法形式: CREATR TABLE table_name ( 字段名1, 数据类型[列级别约束条件][默认值], 字段名2, 数据类型[列级别约束条件][默认值], ...... ); 使用CREATR TAB原创 2017-05-09 20:47:19 · 433 阅读 · 0 评论