频道栏目
首页 > 资讯 > 其他综合 > 正文

五大数据结构入门

18-08-07        来源:[db:作者]  
收藏   我要投稿

从今天开始学习非关系型数据库即NOSQL(Not Only SQL),而Redis则是著名的NOSQL数据库之一,今天来学习NOSQL的五大数据结构并对五大数据结构进行总结,在这之前,先了解了解非关系型数据库NOSQL。

关于NOSQL

什么是NOSQL

NoSQL(NoSQL = Not Only SQL ),意即”不仅仅是SQL”。在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd’s提出的关系模型的论文 “A relational model of data for large shared data banks”,这使得数据建模和应用程序编程更加简单。
通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

为什么使用NoSQL

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

非关系型数据库举例

类型 部分代表 特点
列存储 Hbase Cassandra Hypertable 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储 MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储 Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储 Neo4J FlockDB 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储 db4o Versant 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库 Berkeley DB XML BaseX 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

Redis

Redis简介

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

Redis是一款速度非常快的非关系型数据库,它可以存储键(key)与5中不同类型的值(value)之间的映射(mapping)。可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。

Redis的数据结构

Redis可以储存键与5中不同数据结构类型的映射,这五种数据结构分别为STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)、ZSET(有序集合)。一部分Redis命令对于这5中数据结构都是通用的,如DEL、TYPE等,在入门过后,会慢慢学习Redis的数据结构深入命令与使用。

数据类型 结构存储的值 结构的读写能力
STRING 可以是字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作;对整数和浮点数进行自增或者自减操作
LIST 一个链表,链表上的每个节点都包含了一给个字符串 从链表的两端推入或者弹出元素;根据偏移量对链表进行修剪;读取单个或者多个元素;根据值查找或者移除元素
SET 包含字符串的无序收集器,并且被包含的每个字符串都是独一无二,各不相同的 添加、获取、移除单个元素,检查一个元素是否存在于集合中;计算集合的并交叉;从集合里面随机获取元素
HASH 包含键值对的无序散列表 添加、获取、移除单个键值对;获取所有键值对
ZSET 字符串成员与浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定 添加、获取、删除单个元素;根据分值范围或者成员来获取元素

Redis中的字符串命令

GET 获取存储在给定键中的值 SET 设置存储在给定键中的值 DEL 删除存储在给定键中的值 (这个命令可用于所有类型)

Redis中的列表命令

RPUSH 将给定值推入列表的右端 LRANGE 获取列表在给定范围的所有z值 LINDEX 获取列表在给定位置上的单个元素 LPOP 从列表的左端弹出一个值,并返回被弹出的值

Redis中的集合命令

SADD 将给顶元素添加到集合 SMEBERS 返回集合包含的所有元素 SISMEMBER 检查给定元素是否存在集合中 SREM 如果给定的元素存在于集合中,那么移除这个元素

Redis中的散列命令

HEST 在散列里面关联给定的键值对 HGET 获取给定散列键值对 HGETALL 获取散列包含的所有键值对 HDEL 如果给定键存在于散列里面,那么移除这个键

Redis中的有序集合命令

ZADD 将一个带有给定分值的成员添加到有序集合里面 ZRANGE 根据元素在有序排列中所处的位置,从有序集合里面获取多个位置 ZRANGEBYSCORE 获取有序集合在给定分值范围内的所有元素 ZREM 如果给定成员存在于有序集合,那么移除这个成员

总结

今天主要对非关系型数据库(NOSQL)进行初步认识,以及以键值对类型的Redis的初步认识以及Redis五大数据结构的入门,今后会继续对Java中Redis的操作Jedis、Redis的深入操作,持久化等更多知识进行学习和总结。(埋一个坑)

相关TAG标签
上一篇:Python random模块的功能和简单随机验证码
下一篇:truncate、delete和drop的异同
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站