数据库、MYSQL、Redis
文章平均质量分 70
aa
Bread Sir
记录算法之路
展开
-
Redis 设计与实现——对象
之前我们整理的内容是Redis用到的数据结构,但是Redis 并没有直接使用这些数据结构来实现键值对数据库, 而是基于这些数据结构创建了一个对象系统, 这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少一种我们前面所介绍的数据结构。Redis 对象的类型与编码Redis使用对象来表示数据库中的键和值,当创建一个键值对时,我们至少会创建两个对象,即键对象和值对象。typedef struct redisObject { // 类型原创 2021-08-28 22:49:01 · 252 阅读 · 0 评论 -
Redis 设计与实现——跳跃表
跳跃表跳跃表概述跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。Redis 使用跳跃表作为有序集合键的底层实现之一: 如果一个有序集合包含的元素数量比较多, 又或者有序集合中元素的成员(member)是比较长的字符串时, Redis 就会使用跳跃表来作为有序集合键的底层实现。Redis 跳跃表的实现跳跃表是一种可以对有序链表进行近似二分查找的数据结构,redis 在两个地方用到了跳跃表,一个是实现有序集合,另一个是在集群节原创 2021-08-27 10:35:48 · 263 阅读 · 0 评论 -
Redis 设计与实现——字典
字典字典中,一个键key和一个值value关联起来,这称为键值对。字典中的每个键都是独一无二的, 程序可以在字典中根据键查找与之关联的值, 或者通过键来更新值, 又或者根据键来删除整个键值对, 等等。Redis字典的实现Redis 的字典使用哈希表作为底层实现, 一个哈希表里面可以有多个哈希表节点, 而每个哈希表节点就保存了字典中的一个键值对。哈希表typedef struct dictht { dictEntry **table; // 哈希表数组 unsigned long原创 2021-08-05 17:57:05 · 216 阅读 · 0 评论 -
Redis 设计与实现——链表
链表链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层实现。redis> LLEN integers(integer) 1024redis> LRANGE integers 0 101) "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 · 120 阅读 · 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 · 142 阅读 · 0 评论 -
高性能MySQL——第五章 创建高性能的索引
什么是索引?索引在MySQL中也叫作“键 key”,它是存储引擎用于快速找到记录的一种数据结构。当表中数据量越来越大,索引就非常重要!!索引优化是对查询性能优化最有效的手段(可以提高几个数量级)。索引基础索引就像一本书的目录,想要理解索引,最简单的方法就是去看看《高性能MySQL》这本书的“索引”部分,找到对应的页码。在MySQL中,存储引擎用类似的方法使用索引,其先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。对于这段sql语句查询:SELECT first_name FR原创 2021-05-24 21:10:12 · 124 阅读 · 0 评论 -
高性能MySQL——第二章 MySQL 基准测试
基准测试是针对系统设计的一种压力测试,通常目标是为了掌握系统的行为。为什么要基准测试?验证基于系统的一些假设,确认这些假设是否符合实际情况。重现系统中的某些异常行为,以解决这些异常。测试系统当前运行情况。如果不清楚系统当前的性能,就无法确认某些优化的效果如何。也可以利用历史的基准测试结果来分析诊断一些无法预测的问题。模拟比当前系统更高的负载,以找出系统随着压力增加而可能遇到的扩展性瓶颈。规划未来的业务增长。测试应用适应可变环境的能力。测试不同的硬件、软件和操作系统配置。证明新采购的设备配原创 2021-05-10 19:14:54 · 73 阅读 · 0 评论 -
高性能MySQL——第一章 MySQL 架构与历史
本章主要了解:MySQL的服务器架构各种存储引擎之间的主要区别这些区别的重要性MySQL 逻辑架构一共三层服务:最上层并不是MySQL独有,大多基于网络的客户端/服务器的工具或服务都有类似架构。第二层包含了大多数MySQL的核心服务功能。包括查询解析、分析、优化、缓存以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图。第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API与存储引擎进行通信,存储原创 2021-05-09 20:21:28 · 239 阅读 · 4 评论 -
MySQL必知必会——第一部分简介
Chapter 1 了解SQL1.1 数据库基础1.1.1 什么是数据库?保存有组织的数据的容器(通常是一个文件或一组文件)。注意,与数据库软件(DBMS)不同。1.1.2 表某种特定类型数据的结构化清单。存储在表中的数据是一个类型的数据或一个清单,不能混淆不同类型。表都有自己的一个名字(唯一性)。模式:关于数据库和表的布局及特性的信息。1.1.3 列和数据类型表由列组成。列中存储着表中某部分的信息。列为表中一个字段。所有表都是由一个或多个列组成的。数据库中每个列都有相原创 2020-08-18 15:20:27 · 97 阅读 · 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 · 589 阅读 · 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 · 291 阅读 · 0 评论 -
数据库设计
数据库设计概述:一般定义: 对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理 结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。信息管理要求指:在数据库中应该存储和管理哪些数据对象 数据操作要求指:对数据对象需要哪些操作,如增、删、改、查等操作。数据库设计的基本步骤需求分析概念结构设计逻辑结构设计物理结原创 2017-06-09 16:10:02 · 483 阅读 · 0 评论 -
数据库之——范式(最通俗易懂)
学习了两天的范式,虽然还有点迷迷糊糊,但是基本能够判断一个数据库属于第几范式了。先把几个术语描述一下:实体:客观存在并可相互区别的事物称为实体。比如具体的人、物,也可以是抽象的概念或联系,如一个职工、学生、部门、学生的一次选课、部门的一次订货、教师与院系的工作关系等等。属性:实体所具有的某一特性。属性是一个逻辑概念,比如说“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看原创 2017-06-07 14:46:11 · 929 阅读 · 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 · 432 阅读 · 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 · 455 阅读 · 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 · 373 阅读 · 0 评论