-
2022-03-22 18:20:04
1、首先我们需要先引入redis的star后续的话,才能够使用redis的存取的相关方法
pom.xml引入对应star,并且还要引入对应的序列化:用的是alibaba的fastjson;
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.3.2.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.16</version> </dependency>
2、在使用时,我们会在service层进行使用,在数据写入数据库后,我们也直接将数据写入redis中,修改、删除也都是这个顺序,再对数据进行操作完成后,我们就直接对我们的redis进行操作;
例如对redis进行插入数据,我们需要先注入:
@Autowired
private RedisTemplate<String, Object> redisTemplate;@Autowired private RedisTemplate<String, Object> redisTemplate;
这边的key我们一般都是以String进行存储,但是后面的value可能有很多种类型,所以这边我们使用object;
3、那我们进行写入时的用法:
//插入学生 public void insertStudent(Student student) { studentMapper.insertStudent(student); System.out.println("插入学生成功"); //将数据插入redis中 redisTemplate.opsForValue().set("student:"+student.getNo(), student); }
通过redisTemplate.opsForValue().set("student:"+student.getNo(), student);这边的opsForValue的话value代表为String类型的数据,那我们还可以用set、list等等,这个一般是根据实际情况进行
4、读取时,也是通过调用这个方法,只是将set改为了get
//查询学生 public Student selectByNo(String no) { Student stu = (Student) redisTemplate.opsForValue().get("student:"+no); //Student student = studentMapper.selectByNo(no); System.out.println("通过redis查询到"); System.out.println(stu); return stu; }
需要将我们从redis中查询出来的数据进行强转为我们需要展示出来的对象;
更多相关内容 -
数据库管理系统的层次结构--数据存取层和缓冲区管理
2018-11-06 23:35:10一、数据库管理系统的层次结构之数据存取层 数据存取介于语言处理层和数据存储层之间。它向上提供单元组接口,即导航式的一次一个元组的存取操作;向下则以系统缓冲区的存储器接口作为实现基础。接口关系如下: ...一、数据库管理系统的层次结构之数据存取层
数据存取介于语言处理层和数据存储层之间。它向上提供单元组接口,即导航式的一次一个元组的存取操作;向下则以系统缓冲区的存储器接口作为实现基础。接口关系如下:
数据存储层所涉及的主要数据结构为逻辑数据记录、逻辑块、逻辑存取路径。
存取层的任务主要包括:- 提供一次一个元组的查找、插入、删除、修改的等基本操作。
- 提供元组查找所循的存取路径以及对存取路径的维护操作,如对索引记录的增删改查。若索引是采用B+树的建立、查找、插入、删除、修改等功能。
- 对记录和存取路径的封锁、解锁操作。
- 日志文件的登记和存取操作。
- 其他辅助操作(扫描、合并/排序),其操作对象有关系、有序表、索引等。
1、 数据存取层的系统结构
在实际的关系数据库管理系统中由多个功能子系统来完成数据存取层中的许多功能。数据存取层的系统结构如下:
这些子系统相互配合、紧密联系,构成了一个完整的数据存取系统。2、数据存取层的功能子系统
- 记录存取、事务管理子系统
数据存取层不涉及存储分配、存储结构及有关参数,只在数据的逻辑结构上操作,因而可以把各种物理实现形态隐蔽起来。
记录存取子系统提供按某个属性值直接取一个元组和顺序取一个元组的存取原语。这种存取运算是按已选定的某个逻辑存取路径进行的。
事务管理子系统提供定义和控制事务的操作。数据库中事务是并发控制和恢复的单位,事务管理子系统提供的这些操作将登记进日志文件中。 - 日志登记子系统
日志等级子系统和事务管理子系统紧密配合,完成关系数据库管理系统对事务和数据库的恢复任务,它把事务的开始、回滚、提交,对元组的插入、删除、修改,以及对索引记录的插入、删除、修改等每一个操作作为一个日志记录存入日志文件中。当事务或系统软硬件发生故障时利用日志文件执行恢复。
写日志文件的有关操作:
写日志记录(WIRTELOG)
读日志记录(READLOG)
扫描日志文件(SCANLOG)
撤销尚未结束的事务(UNDO)
重做已经结束的事务(REDI)- 控制信息管理模块
该模块利用专门的数据区(内存中)等级不同记录类型以及不同存取路径的说明信息(取自字典)和控制信息,这些信息是存取元组和管理事务的依据。该模块和事务管理、记录存取子系统一起保证事务的正常运行,提供对数据字典中说明信息的读取、增加、删除和修改操作。 - 排序/合并子系统
在语言处理层中,描述性语言表达的集合级操作被转换成一系列对数据存取层所提供的存取原语的调用。为了得到用户锁要求的有序输出,为了加速关系运算的中间步骤,常常需要对关系元组重新排序,这一工作由排序/合并子系统来完成。
排序操作的若干主要用途:
1)输出有序结果
2)数据预处理
对于并、交、差、分组聚集、连接、取消重复值、属于、不属于等关系运算,当参与运算的关系无法全部放入内存时,先对其进行排序预处理,再在有序表上执行相应操作的做法是降低处理代价的常用手段。
3)支持动态建立索引结构
B+树是数据库中常用的索引结构。B+树的叶页索引记录形式(码值,TID),其中TID为元组标识符。TID可用元组逻辑记录号、主码值或数据块加位移等来表示。索引记录在B+树的叶页上是顺序存储的,因此在初建B+树索引时首先要对(码值,TID)排序。
4)减少数据块的存取次数
通过B+树索引存取元组时,首先得到(码值,DIT)集合,然后根据TID存取相应的元组。当TID是用数据块号加位移来表示时,可首先对TID排序,使相同或临近块号的TID聚集在一起,然后按数据块号顺序存取物理数据块,避免无序状态下重复读块的情况,减少数据块的存取次数。
排序操作是数据存取子系统和存取路径维护子系统都要经常调用的操作,它对提高系统效率具有关键的作用。
- 存取路径维护子系统
对数据库执行插入、删除、修改操作的同时,要对相应的存取路径进行维护。 - 封锁子系统
封锁子系统完成并发控制功能。
1)在操作系统中也有并发控制问题,数据库与操作系统的封锁技术比较:
2)数据库管理系统中封锁子系统设计的难点不急在于技术复杂,而且其实现手段依赖于操作系统提供的环境。
二、数据库管理系统的层次结构之缓冲区管理
数据存取层的下面是数据存储层。该层主要是存储管理,包括缓冲区管理、内外存交换、外存管理等。
数据存储层向数据存取层提供的接口是由定长页面组成的系统缓冲区。
系统缓冲区的设立的原因:- 它把数据存储层以上各系统成分和实际的外存设备隔离,外存设备的变更不会影响其他系统成分,使关系数据库管理系统具有设备独立性。
- 提供存取效率。
关系数据库管理系统利用系统缓冲区缓存数据,当数据存取层需要读取数据时,数据存储子系统首先到系统缓冲区中查找。只有当缓冲区不存在该数据时才真正从外存读入该数据所在的页面。当数据存取层写回一元组到数据库中时,存储子系统并不把它立即写回外存,仅把该元组所在的缓冲区页面作一标志,表示可以释放。只有当该用户事务结束或缓冲区已满需要调入新页时,才按一定的淘汰策略把缓冲区中已有释放标志的页面写回外存。这样可以减少内外存交换的次数,提高存取效率。
系统缓冲区可由内存或虚存组成。由于内存空间紧张,缓冲区的大小、缓冲区内存和虚存部分的比例要精心设计,针对不同应用和环境按一定的模型进行调整。既不能让缓冲区占据太大的内存空间,也不能因其空间太小而频频缺页、调页,造成“抖动”,影响效率。
数据库缓冲区及上下接口:
缓冲区由控制信息和若干定长页面组成。缓冲区管理模块向上层提供的操作是缓冲区的读(READBUF)、写(WRITEBUF)。缓冲区内部的管理操作有查找页、申请页、淘汰页。缓冲区管理调用操作系统的操作有读(READBUF)、写(WRITEBUF)。
缓冲区管理示意图:
缓冲区管理中主要算法是淘汰算法和查找算法。操作系统中的淘汰算法:FIFO(先进先出算法)、LRU等。查找算法用来确定所请求的页是否在内存,可采用顺序扫描、折半查找、hash查找算法等。
-
论文研究-多格式海量数据统一存取的索引结构.pdf
2019-07-22 21:39:15为提高多格式海量数据统一存取效率, 提出了一种基于Hadoop的分布式数据读取模式。并通过对海量数据非主键索引结构的研究, 结合统一存取的描述理念, 提出了基于HDFS的一种可适用于B-树和R-树及其变种的层次索引结构, ... -
多格式海量数据统一存取的索引结构 (2013年)
2021-05-26 16:20:58为提高多格式海量数据统一存取效率, 提出了一种基于Hadoop的分布式数据读取模式。并通过对海量数据非主键索引结构的研究, 结合统一存取的描述理念, 提出了基于HDFS的一种可适用于B-树和R-树及其变种的层次索引结构, ... -
Delphi 演示BS三层数据库存取实例
2010-04-12 15:05:05Delphi 演示BS三层数据库存取实例 Delphi演示BS三层数据库存取实例,程序由服务端和客户端构成,使用ado连接,后台access数据库。客户端从服务端获取数据并显示,有一个DataGird的应用,新手可参考一下。 -
设计、实现一个 Asp.Net 应用的通用数据存取层
2003-10-31 21:33:00设计、实现一个 Asp.Net...我们的目标是设计、实现一种适当的、可伸缩的数据存取层(DAT),从而设计出可靠的、可复用的 web 应用程序。我将这篇文章分成了两部分,第1部分我们将讨论体系目标,定义数据集、事件日志以及设计、实现一个 Asp.Net 应用的通用数据存取层
摘要
在这篇文章中,我们将深入探讨 N 层体系结构的设计,同时,我们的焦点将集中在数据存取层(DAT)。我们的目标是设计、实现一种适当的、可伸缩的数据存取层(DAT),从而设计出可靠的、可复用的 web 应用程序。我将这篇文章分成了两部分,第1部分我们将讨论体系目标,定义数据集、事件日志以及 HttpModules,这部分会帮助我们理解这篇文章的第2部分。在第2部分中,我们创建了一个小的 N 层应用程序,我们的焦点将集中到设计、实现数据存取层(DAT)。下面的文章中,你需要一个 SqlServer (数据库: Northwind) 和一个 VS.net。
目录:
1. 数据存取层(DAT)的设计目标
1.1 体系目标
1.2 原型设置
1.3 定义数据集
1.4 事件日志
1.5 HttpModules
2.0 实现通用的数据存取层(DAT)
2.1 实现一个超级数据存取层(DAT)类
2.2 测试、评估 SqlDataReader 和 DataSet 对象在商用层的性能
2.3 我怎样将这个数据存取层(DAT)扩展以存取多层数据库?
2.4 我怎样在不同的层次上应用数据库事务?
2.5 我怎样插入及获取图像数据?
上图向我们展示了一个典型的 3 层应用程序,它被分为3个主要层次:数据层(DA),中间层以及表示层(PT)。
如果你不熟悉 N 层体系结构,我建议你参考以下文档:
- http://www.c-sharpcorner.com/Tutorials/Building3TierAppPA.asp
- http://www.c-sharpcorner.com/Code/2002/June/AdoNetWinDNAPerspective.asp
1. 设计一个适当的数据存取层(DAT)
1.0 体系目标
企业级应用程序必须具备以下特征:
- 协同性及可扩展性
- 伸缩性及性能
- 可靠性及可管理性
- 安全性
让我们仔细看看上面这些话,它们的真正意思是什么?
系统的协同工作处理能力是指在不同环境中,与其它内部或外部系统之间的通信能力。这一点非常重要,因为我们需要及时获取我们的客户以商业伙伴的信息。要完成这个重要目标,我们的系统必须能够提供相关的 web 服务。 (待续)
-
vuex存取数据(超详细)
2022-06-22 09:42:31vuex主要是做数据交互,父子组件传值可以很容易办到,但是兄弟组件间传值(兄弟组件下又有父子组件),或者大型spa单页面框架项目,页面多并且一层嵌套一层的传值,异常麻烦,用vuex来维护共有的状态或数据会显得...vuex主要是做数据交互,父子组件传值可以很容易办到,但是兄弟组件间传值(兄弟组件下又有父子组件),或者大型spa单页面框架项目,页面多并且一层嵌套一层的传值,异常麻烦,用vuex来维护共有的状态或数据会显得得心应手
commit:同步操作,触发的方法写在mutations里
this.$store.commit('方法名',值)【存值】
this.$store.state.方法名【取值】
dispatch: 异步操作 ,触发的方法写在actions里
this.$store.dispatch('方法名',值)【存值】
this.$store.getters.方法名【取值】
下面我就为大家演示一下同步操作的时候, 怎么把一个页面上面的数据通过vuex传递给其他不相关的页面。异步操作和同步操作步骤是一样的
1.首先在data里定义假数组datalist【】,然后用同步的方式存值:this.$store.commit('方法名',值)
this.$store.commit('changeValue',this.datalist)
2.在store文件夹下面的index.js文件里定义一下这个方法和数组
state: { datalist: [] }, mutations: { //同步触发的方法 changeValue(state, newVal) { state.datalist = newVal } },
3.在需要取值的页面写这段代码
console.log(this.$store.state.datalist);
4.这样取值会存在一个弊端,刷新页面的时候是取不到数据的 ,要先点击一下有数据的页面再去点击取数据的页面才会有数据。下面再交大家一下怎么样在刷新页面的时候保证数据不丢失(将vuex中的数据直接保存到浏览器缓存中)
在app.vue里直接加上这段代码,加上之后怎么刷新数据都不会丢失了
created() { if (sessionStorage.getItem('store')) { this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store')))); } window.addEventListener('beforeunload', () => { sessionStorage.setItem('store', JSON.stringify(this.$store.state)); }); }
-
一种基于Web的电力营销数据挖掘系统
2020-07-09 12:53:14为了更好地利用供电公司在生产和营销过程中...该系统采用包括业务逻辑层、应用服务层和数据存取层在内的三层B/S体系结构及基于模型-视图-控制器(MVC)的设计模式,具有跨平台和可扩展性、可维护性等优点,应用前景广阔. -
SpringBoot集成ElasticSearch存取数据实战
2022-02-25 13:16:00前面几篇分析了elk存取日志相关的操作,今天我们持续分享SpringBoot集成ElasticSearch存取数据实战,在项目开发过程中直接使用。而使用SpringBoot整合Elasticsearch,一般都是使用SpringData进行封装的,然后再dao层... -
ThreadLocal原理解析(1):数据存取
2016-07-22 16:12:03ThreadLocal原理解析(1):数据存取 转载请注明出处: 【huachao1001的专栏:http://blog.csdn.net/huachao1001】 本文是源码解析是基于 JDK 1.7 注意: Android 内使用的 ThreadLocal 跟 JDK 内部的... -
设计、实现一个 Asp.Net 应用的通用数据存取层(二)
2003-12-08 21:21:00设计、实现一个 Asp.Net 应用的通用数据存取层(二)翻译:nxyc_twz@163.com1.2 原型安装在我们继续下一步之前,我建议您安装示例程序 DAPrototype, 因为以下的步骤中会多次涉及它。解决方案 DAPrototype.sln 由下面... -
逻辑数据模型之层次数据模型、网状数据模型和关系数据模型
2018-04-30 10:11:28上一篇文章简单介绍了概念数据模型、逻辑数据模型、物理数据模型的基本概念、特性以及三者所对应的数据库的开发阶段。现在针对逻辑数据模型中所用到的三种数据模型---层次数据模型、网状数据模型以及关系数据模型做... -
计算机网络3 数据链路层
2020-09-17 09:53:34使用点对点信道的数据链路层 数据链路层属于计算机网络的低层,主要使用: 点对点信道:一对一的点对点通信方式,点对点协议PPP 广播信道:一对多的广播通信方式,CSMA/CD协议 数据链路和帧 链路(link):从一... -
数据持久层理解
2014-03-30 08:42:53数据持久层理解 J2EE的三层结构是表示层、业务逻辑层、数据持久层,即MVC模式。数据持久层的任务是负责数据的存储。 数据持久层位于业务逻辑层和数据库之间,用于存储数据的一个模块。把数据持久层三都... -
SpringBoot 九 创建数据仓库层Repository(接口层)
2020-08-11 15:44:06(表明是用于底层数据存取的) 2.三层架构 为了符合“高内聚,低耦合”思想,把各个功能模块划分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构,各层之间采用接口相互访问,并通过对象模型的实体类... -
[详细完整版]数据结构.doc
2022-07-11 13:34:21A、顺序存取 B、插入操作能在O(1)的时间复杂度上完成 C、插入时不需移动数据元素 D、节省存储空间 5、顺序表中数据元素的存取方式为( )。 A、随机存取 B、顺序存取 C、索引存取 D、连续存取 6、设... -
“一卡通”数据需求分析报告(横).docx
2021-05-09 21:42:11“一卡通”数据需求分析报告(横).docx -
【计算机网络】谢希仁笔记 数据链路层
2019-03-20 21:25:12数据链路层使用的信道主要有以下两种类型: 点对点信道。这种信道使用一对一的点对点通信方式。 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的... -
王道考研计算机网络第三章--数据链路层
2020-12-16 17:36:48当我们专门研究数据链路层时,很多情况下我们只关心在协议栈中水平方向的各个数据链路层。 3.1.2数据链路层基本概念 结点:主机、路由器 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、... -
Oracle大文本在ASP中存取问题的解决方法
2020-03-04 10:45:31在基于Client/Server结构的数据库环境中,通过OLE DB接口可以存取数据,但它定义的是低层COM接口,不仅不易使用,而且不能被VB,VBA,VBScript等高级编程工具访问。而使用ADO则可以很 容易地使VB等编程语言直接访问... -
数据仓库(一):认识数据仓库
2020-12-28 23:15:32刚接触数据仓库是在我的第一份实习工作——数据中心数据管理系统开发,它是一个B/S架构的应用,与一般的项目不同的是,系统是以数据仓库来进行数据存取的,这是我第一次听说数仓这个词,感觉它庞大而且神秘,不知道... -
企业数据集成及展现项目解决方案
2016-04-07 09:15:32(一)现状:数据源多样,数据集成的成本高; 数据服务接口规范不统一,系统集成的难度大; 数据服务接口缺乏集中管理,系统运维成本高; 数据的存取展现和存取没有进行剥离,... 数据服务层,支持可伸缩的多层应用框架; -
【计算机网络】数据链路层理解
2017-02-18 14:50:02欢迎关注公众号: ------------------------------...1、什么是数据链路层? 数据链路层的基本知识 数据链路层使用的信道主要有以下两种类型: 点对点信道:这种信道的通信方式是一对一的通信方式-------... -
【JAVA】数据访问层
2016-08-26 17:37:14java:数据访问层 -
数据成员的存取
2014-05-23 15:49:25这两种存取x成员的方法,有什么区别?答案是要视类Foo和成员变量x的性质而定。下面就来讨论哪些性质决定了上述操作的效率。 1、static数据成员 static数据成员位于对象实例之外,处在初始化数据段中。不管static... -
漫谈数据仓库中的元数据管理
2022-06-01 00:54:08来源:网络编辑:数据社全文共5253个字,建议10分钟阅读简介:相信很多朋友都是第一次听说元数据管理系统这个名词,当然,从事非数据仓库工作的人,很少会接触到这个系统,即使是正在从事这方面工作的朋友,可能仍然... -
HBase 是如何存取数据的
2018-09-04 15:18:39HBase是一个查询极其快速的非关系型数据库,它在实时读写和实时访问上有着巨大的优势,并且非常灵活。...这看上去是一个数据表,但是对于HBase而言,这只是一行数据。看到这大家可能会比较迷惑,这明... -
网络支付海量数据存取处理的研究
2011-11-13 22:50:18本文从针对网络支付带来的海量数据带来的问题,通过改进和优化数据库配置、数据分割、数据分类、处理算法、数据访问、虚拟内存和文本格式处理等方面,对网络支付带来的海量数据存取处理进行研究,提出了几个可行性的... -
视图层. 控制层, 业务逻辑层, 数据库访问层------新认识
2009-02-02 23:27:00程序项目写了很多了, 总结一下 最初写的C/S模式的都没有过分包的习惯, 后来到了B/S的JSP/Servlet/JavaBean , 才知道了分包的... 原来就简单的理解为它是由封装实体数据的javaBean 和 封装业务逻辑的类来组成.(这的所 -
Django框架实现在线考试系统的示例代码
2021-01-19 23:25:27模型(Model),即数据存取层 模型(Model),即数据存取层 模板(Template),即表现层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。 视图(View),即业务逻辑层 存取模型及调取恰当模板的相关...