redis中的键值淘汰策略 Redis

redis中的键值淘汰策略

当使用的内存到达上限后,redis提供了6种策略来淘汰键值: 策略 描述 volatile-lru 在所有设置了过期时间的键值中根据LRU算法淘汰最近最少使用的 allkeys-lru 对数据库中所有...
阅读全文
MySQL中的B+树索引和哈希索引 MySQL

MySQL中的B+树索引和哈希索引

一、为什么要使用索引 索引是存储引擎用于快速找到记录的一种数据结构。索引对于数据库良好的性能十分关键,尤其是表中的数据量越来越大时,索引对性能的影响十分明显。 《高性能MySQL》中对索引的评价是:索...
阅读全文
redis源码分析:链表实现 Redis

redis源码分析:链表实现

一、链表定义 链表在redis中的使用十分广泛,例如列表的底层实现之一就是链表,包括发布、订阅等等功能都是有用到链表的。redis中链表在adlist.h和adlist.c中实现,只用了300+行代码...
阅读全文
数据库中的多版本并发控制(MVCC) MySQL

数据库中的多版本并发控制(MVCC)

一、概述 事务的出现给并发带来了巨大的便利性,它的ACID特性使得数据在并发时更加可靠。但是对于事务而言,它也会导致出现第一类丢失更新、第二类丢失更新、脏读、不可重复读以及幻读的问题,当然又出现了多种...
阅读全文
MySQL中的行锁、两阶段锁协议以及死锁 MySQL

MySQL中的行锁、两阶段锁协议以及死锁

一、行锁和两阶段锁协议 行锁:顾名思义,就是对某一行加锁,修改的时候不会锁住整个表。相对于表锁来说,行锁的开销更大(因为涉及到MVCC等需要保存快照),但是粒度更小,更适合于高并发场景。行锁是每个引擎...
阅读全文
MySQL两种引擎的区别 MySQL

MySQL两种引擎的区别

一、区别 区别一:MyISAM是非事务安全的,InnoDB是事务安全的 事务安全的特点为更安全,遇到问题会自动恢复或从备份加事务日志回复,如果更新失败,你的所有改变都变回原来。 非事务安全的优点为更快...
阅读全文
使用mysqldump备份数据库 MySQL

使用mysqldump备份数据库

一、备份数据库 mysql自带了数据库备份工具mysqldump可以很方便的对数据库进行备份: 以上命令就完成了一次数据备份,备份后的数据保存在文件db.sql,参数--all-databases是指...
阅读全文