一、数据库的事务
数据库事物有四个特性,①原子性:所有操作要么全部成功,要么全部失败②一致性:事物执行前和执行后都需要保证一致性,也就是从一个一致性状态变到另一个一致性状态,比如A和B之间无论如何转账,总数应该保持一致。③隔离性:一个事务不能被另一个事务干扰。④持久性:一旦事务提交了,那么对数据库中的数据的改变就是永久的。
以上是数据库事务的四大特性;
二、如果不考虑数据库事务的隔离性,会引发的问题
①更新丢失:两个事务同时更新,第二个事务回滚覆盖第一个事务更新的数据
②脏读:读取了另一个未提交事务的数据
③不可重复读:在一个事务范围内,两次查询的结果不一致,和脏读的区别是不可重复读是读取了前一事务提交的数据
④虚读(幻读):修改的数据被其他事务修改回去了并提交,导致后面再次查询的时候发现没有被修改。
三、由此一来Mysql提供的数据库隔离级别
①串行化:隔离级别最高以上四种情况都能避免
②可重复读:可避免以上①②③种问题
③读提交:可避免以上①②问题
④读未提交:可避免以上①问题
那么数据库的隔离级别该怎么设置:在数据库的连接建立是设置conn.setTransactionIsolation(Connection.Transaction_Serializable);并且设置事务开启conn.setAutoCommit(false);
四、mysql存储引擎
①、myisam , inodb , memory , merge四种存储引擎,其中myisam不支持事务也不支持外键,只有memory支持Hash索引
五、Mysql索引
①mysql的索引主要有两种结构B+tree和hash索引,支持hash索引的只有memory存储引擎,也是该存储引擎的默认索引结构。hash索引结构因为是hash散列结构所以当查找某一条数据的时候,速度很快,但是因为hash一个建只对应一个值,所以不支持排序和范围查找
②B+tree索引结构是inodb,Myisam存储引擎的索引结构,支持范围查找和排序,但是单条查询没有hash快
③mysql常见的索引类型有:主键索引(索引值必须唯一且不能为空),唯一索引(索引值必须唯一),普通索引(无限制),全文索引(仅可用于myisam表),组合索引
六、数据库锁有哪些
共享锁,排他锁,更新锁,具体什么时候加锁加什么锁由数据库自行决定,和设置的数据库事务隔离级别有关系
七、一致性hash
一致性hash是将集群中的设备节点和数据映射到一个封闭的环形中,数据通过顺时针空间存放到设备节点。这样的好处是当有一个设备out后,只需将数据考到下一个设备中,如果新增一个设备也只需将拷贝少量的数据到新的设备中。出现问题后,丢失或者不可用的数据尽量做到了最小化
八、Redis为什么的集群模式
Redis通过hash槽而非一致性hash来实现集群模式,
九、怎么通过Redis来实现分布式锁
Redis实现分布式锁的正确方法应该是,通过set设置一个SN值并指定过期时间,避免发生错误没有释放锁时发生死锁,解锁的时候可以通过String script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
Object result = jedis.eval(script, Collections.singletonList(lockKey), Collections.singletonList(requestId));
这样就可以实现一个分布式锁的加锁和解锁。
相关推荐
Redis基本操作,包括五种类型数据的设置,查找,删除等命令
总结起来,"springboot项目连接数据库及redis实例"涵盖了Spring Boot应用的基本架构、数据库连接配置、Redis缓存集成和使用。通过这个实例,开发者可以学习到如何在Spring Boot项目中管理数据源、实现数据库操作以及...
Redis 入门学习教程与面试经验总结 Redis 是一种开源的、基于内存的数据结构存储系统,可以用作数据库、消息中间件、缓存等。下面是 Redis 的一些基本概念和技术要点: 1. Redis 的基本数据结构:字符串、列表、...
总结来说,`REDIS_redis的工具包`提供了在LabVIEW中无缝集成Redis的能力,使得LabVIEW程序能够利用Redis的强大功能,实现高效的数据存储和通信。通过深入理解和实践,开发者可以构建出满足各种需求的LabVIEW-Redis...
Redis是一个开源的高性能键值存储数据库,它支持多种类型...而随着对Redis的进一步学习,例如学习其持久化机制、事务处理、发布订阅、Lua脚本以及Redis模块系统等,可以更深入地理解和应用这一强大的数据存储解决方案。
### 实用手册:Redis全面总结 #### 一、Redis简介 **Redis**(Remote Dictionary Server)是一种开源的、高性能的键值(Key-Value)存储系统。它支持多种数据结构,如字符串(strings)、散列(hashes)、列表...
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它支持存储的 value 类型相对更多,包括 ...
通过以上内容的学习,我们不仅了解了 Redis 的基本概念及其与传统关系型数据库的区别,还掌握了 Redis 的主要数据类型和基本操作。这些知识对于理解 Redis 的应用场景和如何高效地使用 Redis 至关重要。无论是作为...
### Redis 学习与实战应用 #### 一、Redis 概述 Redis 是一款非常流行的非关系型(NoSQL)数据库。它不仅提供了快速的数据访问速度,还支持数据的持久化,使其成为许多应用场景下的首选。 ##### 1.1 NoSQL 数据库...
Redis 是一个高性能的键值数据库,常被用作数据结构服务器,因为它提供了丰富的数据类型,包括字符串(string)、列表(list)、集合(set)、有序集合(sorted set)和哈希(hash)。这些数据类型支持多种原子性操作,例如在...
总结,Redis凭借其高效、灵活的特性,在数据库缓存领域扮演着重要角色。理解并熟练掌握Redis的使用,能显著提升系统的性能和稳定性。通过不断地实践和学习,我们可以更好地利用Redis解决实际问题,优化系统架构。
Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值对存储系统,常被用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希...通过学习和实践Redis,开发者可以提升应用的性能和用户体验。
在深入学习Redis的过程中,我们可以从NoSQL的基本概念、Redis的数据类型以及它们在实际应用中的使用场景来展开讨论。 1. **NoSql简单介绍** - NoSQL,即Not Only SQL,指的是非关系型数据库,它不采用传统的关系...
与传统的关系型数据库不同,Redis 定位为内存数据库,利用内存的高速访问特性,提供高性能的服务。 Redis 选择自己实现虚拟内存机制,而不是依赖操作系统的虚拟内存管理,主要是因为操作系统基于Page的换入换出策略...
Redis数据库是一种开源、高速、内存中的数据存储系统,它支持多种数据结构,如字符串...这部分内容可能还包括对整个学习或项目过程的总结,强调了Redis的关键特性和最佳实践,对于深入理解和应用Redis具有很大的帮助。
### Redis数据库学习资料知识点详解 #### 一、Redis简介与特点 Redis是一个开源的高性能键值存储系统,作为数据结构服务器被广泛应用于缓存、消息队列等多种场景中。其最大的特点是支持多种数据结构(如字符串、...
在本压缩包中,你将找到一系列的Redis学习资料,涵盖了从基础到深入的多个方面,对于初学者来说是很好的学习资源。 首先,让我们了解一下Redis的基础知识。Redis是一个开源、基于内存的数据结构存储系统,它可以将...
### Redis学习资料的完整笔记 #### 一、入门简介 ##### 1.1 NoSQL非关系型数据库 - **概念**:NoSQL全称为Not Only SQL,是指非关系型...以上就是关于Redis学习资料中的关键知识点总结,希望对学习Redis有所帮助。
SpringBoot2整合Redis多数据源是一个非常重要的知识点, especially 在分布式系统中,REDIS作为一个高性能的Key-Value数据库,广泛应用于缓存、Session管理、消息队列等领域。下面我们将详细介绍SpringBoot2整合...