Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >初识Neo4j

初识Neo4j

作者头像
jeanron100
发布于 2018-03-22 06:58:42
发布于 2018-03-22 06:58:42
1.6K10
代码可运行
举报
运行总次数:0
代码可运行

睡觉前,突然想起来Neo4j这个数据库,以前认为是一个相当神秘的数据库,一听是图数据库,以为是存储图片的。一想不对啊,存储图片不是数据库层面建议的,所以自己理了下,也算是自己说服自己吧。

Neo4j是开源的,分了多个版本,其中企业版是基于AGPL协议的。

也就意味着你需要扩展,需要补充一个协议。

Neo4j的版本也分了不同的平台,目前较新的版本是3.3,最新的3.4

Neo4j比较贴心的是下载的时候会提示你注册一个用户,注册之后,会给你发送一个电子版的pdf文档。有一些详细的技术细节。

下载Neo4j其实会很多的选择,有很多的组件可下载。其中Cypher学习Neo4j的重中之重。限于时间关系,我就学了几个花拳绣腿。

因为Neo4j是基于Java,所以使用Java来做数据的处理还是很方便的,当然他也支持不同平台的语言和技术。

我们来简单实践一下。

首先从官网下载Neo4j,安装包大概是80M左右。

因为Neo4j是基于Java开发,我选择的版本是3.3,能够接受的最低版本是1.8了。所以在安装配置的时候我们需要提前准备好Java.

然后在bin目录下启动Neo4j,有两种方式,一种是使用console选项,一种是start基于后台模式。

启动的日志如下:

[root@dev01 bin]# ./neo4j console

Active database: graph.db

Directories in use:

home: /root/neo4j/neo4j-community-3.3.2

config: /root/neo4j/neo4j-community-3.3.2/conf

logs: /root/neo4j/neo4j-community-3.3.2/logs

plugins: /root/neo4j/neo4j-community-3.3.2/plugins

import: /root/neo4j/neo4j-community-3.3.2/import

data: /root/neo4j/neo4j-community-3.3.2/data

certificates: /root/neo4j/neo4j-community-3.3.2/certificates

run: /root/neo4j/neo4j-community-3.3.2/run

Starting Neo4j.

WARNING: Max 1024 open files allowed, minimum of 40000 recommended. See the Neo4j manual.

2018-01-23 15:12:55.972+0000 INFO ======== Neo4j 3.3.2 ========

2018-01-23 15:12:56.010+0000 INFO Starting...

2018-01-23 15:12:57.425+0000 INFO Bolt enabled on 127.0.0.1:7687.

2018-01-23 15:13:01.078+0000 INFO Started.

2018-01-23 15:13:02.240+0000 INFO Remote interface available at http://localhost:7474/

我们可以使用提供的url来连接,默认的密码是neo4j,第一次登录之后会提示你修改密码。

然后我们可以基于cypher-shell的命令行方式来学习neo4j或者图形的方式都可以。

如果要连接到Neo4j,使用cypher-shell的方式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@dev01 bin]# ./cypher-shell 
username: neo4j
password: *******
Connected to Neo4j 3.3.2 at bolt://localhost:7687 as user neo4j.
Type :help for a list of available commands or :exit to exit the shell.
Note that Cypher queries must end with a semicolon.

我们创建数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo4j> CREATE (A {id:1,name:'A'}), (B {id:2,name:'B'}), (C {id:3,name:'C'}), (D {id:4,name:'D'}),(E {id:5,name:'E'}),(A)-[:Son]->(B),(A)-[:Son]->(C),(B)-[:Son]->(D),(C)-[:Son]->(E); 
0 rows available after 226 ms, consumed after another 0 ms
Added 5 nodes, Created 4 relationships, Set 10 properties

遍历,得到关系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
neo4j> START n=node(*) RETURN n;
+----------------------+
| n                    |
+----------------------+
| ({name: "A", id: 1}) |
| ({name: "B", id: 2}) |
| ({name: "C", id: 3}) |
| ({name: "D", id: 4}) |
| ({name: "E", id: 5}) |
+----------------------+
5 rows available after 1385 ms, consumed after another 18 ms
neo4j>

如果是通过终端的方式,就更方便了。

直接在里面输入信息,就可以得到图形的结果了。

当然如果要深入下去,可做的事情还有很多。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
可以,大佬,互粉一下
可以,大佬,互粉一下
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
帅气的 Spring Session 功能,基于 Redis 实现分布式会话,还可以整合 Spring Security!
摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Distributed-Session/ 「芋道源码」欢迎转载,保留摘要,谢谢!
芋道源码
2020/06/01
7K0
【SSO单点登录】分布式Session存在问题&& spring-session的设计之妙
当我们用nginx做负载均衡时,用户在A服务器登录了,A服务器存储了session,客户端也存储了cookie,其中有JSESSIONID。
用户6256742
2024/07/09
1560
【SSO单点登录】分布式Session存在问题&& spring-session的设计之妙
Spring Session工作原理
HTTP协议本身是无状态的,为了保存会话信息,浏览器Cookie通过SessionID标识会话请求,服务器以SessionID为key来存储会话信息。在单实例应用中,可以考虑应用进程自身存储,随着应用体量的增长,需要横向扩容,多实例session共享问题随之而来。
2020labs小助手
2019/07/30
6380
补习系列(15)-springboot 分布式会话原理
在 补习系列(3)-springboot 几种scope 一文中,笔者介绍过 Session的部分,如下:
美码师
2019/01/23
6400
理解分布式Session处理来看看spring怎么做的
​ Session 是我们在做java web项目 或者是其他的web项目时 一定会接触的,在学习中,常常被我们用来存储用户的一些关键信息,如:登录状态等
冷环渊
2022/11/07
4570
理解分布式Session处理来看看spring怎么做的
分布式共享Session之SpringSession源码细节
1. 概要 本文介绍SpringSession的主要功能的实现原理。在看源码的同时参照SpringSession开了一个“简化”版的Session框架--SimpleSession,简单好用,功能刚好够用,由于删除了很多SpringSession种用不到的功能,源码上可读性更好和自定义开发更容易。 2. 替代本地原生Session的秘密 几乎所有的方案都类似,使用 Filter 把请求拦截掉然后包装 Request 和 Response 使得 Request.getSession 返回的 Session 也
alexqdjay
2018/05/11
1.3K0
Spring Session关键类源码分析
要想使用spring session,还需要创建名为springSessionRepositoryFilter的SessionRepositoryFilter类。该类实现了Sevlet Filter接口,当请求穿越sevlet filter链时应该首先经过springSessionRepositoryFilter,这样在后面获取session的时候,得到的将是spring session。为了springSessonRepositoryFilter作为filter链中的第一个,spring session提
JavaEdge
2018/04/28
1.2K0
Spring Session关键类源码分析
分布式session-SpringSession的应用
Spring Session提供了一套创建和管理Servlet HttpSession的方案,默认采用外置的Redis来存储Session数据,以此来解决Session共享的问题。
程序猿川子
2024/09/26
1540
分布式session-SpringSession的应用
SpringSession的源码解析.(生成session,保存session,写入cookie全流程分析)
上一篇文章主要介绍了如何使用SpringSession,其实SpringSession的使用并不是很难,无非就是引入依赖,加下配置。但是,这仅仅只是知其然,要知其所以然,我们还是需要深入源码去理解。在看本文先我们先想想,下面这些问题Session是啥时候创建的呢?通过什么来创建的呢?创建之后如何保存到Redis?又是如何把SessionId设置到Cookie中的呢?带着这一系列的问题,今天就让我们来揭开SpringSession的神秘面纱,如果读者朋友们看完本文之后能够轻松的回答上面的问题,那本文的作用也就达到了。当然,如果您已经对这些知识了若指掌,那么就不需要看本文了。 看源码的过程真的是一个很枯燥乏味的过程,但是弄清楚了其调用过程之后,又是很让人兴奋的,话不多说,直接进入正题。
码农飞哥
2021/08/18
1.5K0
他来了,读取SpringSession中读取session的过程
上一篇我们介绍了SpringSession中Session的保存过程,今天我们接着来看看Session的读取过程。相对保存过程,读取过程相对比较简单。 本文想从源码的角度,详细介绍一下Session的读取过程。
码农飞哥
2021/08/18
1K0
Spring Session 实现分布式会话管理
1、分布式会话管理是什么? 在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据。通常是由符合session规范的容器来负责存储管理,也就是一旦容器关闭,重启会导致会话失效。因此打造一个高可用性的系统,必须将session管理从容器中独立出来。 2、分布式会话管理的解决方案选用 实现方案有很多种,下面简单介绍下:   第一种是使用容器扩展来实现,大家比较容易接受的是通过容器插件来实现,比如基于Tomcat的tomcat-redis-session-manager,基于Jetty的jett
斯武丶风晴
2018/03/01
1.7K0
Spring Session 实现分布式会话管理
次世代的会话管理项目 Spring Session
原文作者:Adib Saikali 原文地址:https://www.infoq.com/articles/Next-Generation-Session-Management-with-Spring
Techeek
2018/06/25
1K0
Spring Boot 使用 Spring Session 集成 Redis 实现Session共享Spring Boot 使用 Spring Session 集成 Redis 实现Session共享
通常在web开发中,Session 会话管理是很重要的一部分,用于存储与用户相关的一些数据。在Java Web 系统中的 Session一般由 Tomcat 容器来管理。不过,使用特定的容器虽然可以很好地实现会话管理,但是基于Tomcat的会话插件实现tomcat-redis-session-manager 和tomcat-memcache-session-manager,会话统一由 NoSql 管理。对于项目本身来说,无须改动代码,只需要简单的配置Tomcat的server.xml就可以解决问题。但是插件太依赖于容器,并且对于Tomcat各个版本的支持不是特别的好。重写Tomcat的session管理,代码耦合度高,不利于维护。而使用开源的Spring Session 框架,既不需要修改Tomcat配置,又无须重写代码,只需要配置相应的参数即可完成分布式系统中的 Session 共享管理。
一个会写诗的程序员
2018/08/17
3.8K0
Spring Security 6.x 一文讲透Session认证管理机制
之前几篇文章,主要围绕着身份认证的相关内容,今天主要讨论一下认证状态的保持,由于HTTP协议是无状态的,因此在认证成功之后,为了让后续的请求可以继续保持住这个认证状态,避免每次请求都要重新发起认证过程,就需要对认证结果进行持久化,然后在新的请求到达时查询并还原回来对应的认证状态,通常有两种实现方案,一种是经典的cookie-session方案,即在服务端的session属性中存取认证信息,优点是实现方法比较简单,另一种是token令牌方案,利用一些算法对认证信息进行编码和解码,优点是无需落地,有效地减轻服务端存储的压力,本文主要介绍Spring Security框架中基于session的认证及常用的管理机制。
fullstackyang
2024/06/27
1.1K0
Spring Security 6.x 一文讲透Session认证管理机制
通过Spring Session实现新一代的Session管理
长期以来,session管理就是企业级Java中的一部分,以致于我们潜意识就认为它是已经解决的问题,在最近的记忆中,我们没有看到这个领域有很大的革新。 但是,现代的趋势是微服务以及可水平扩展的原生云应用(cloud native application),它们会挑战过去20多年来我们设计和构建session管理器时的前提假设,并且暴露了现代化session管理器的不足。 本文将会阐述最近发布的Spring Session API如何帮助我们克服眼下session管理方式中的一些不足,在企业级Java中,传统
JavaEdge
2018/05/16
2K0
Spring Session解决分布式Session问题的实现原理
使用Spring Session和Redis解决分布式Session跨域共享问题
Java后端技术
2018/08/09
8470
Spring Session解决分布式Session问题的实现原理
使用Spring Session实现Spring Boot水平扩展
Spring Boot应用通常会部署在多个Web服务器上同时提供服务,这样做有很多好处:
博文视点Broadview
2020/06/11
1.1K0
使用Spring Session实现Spring Boot水平扩展
微服务网关与用户身份识别,服务提供者之间的会话共享关系
一套分布式微服务集群可能会运行几个或者几十个网关(gateway),以及几十个甚至几百个Provider微服务提供者。如果集群的节点规模较小,那么在会话共享关系上,同一个用户在所有的网关和微服务提供者之间共享同一个分布式Session是可行的,如图6-8所示。
愿天堂没有BUG
2022/10/28
7630
微服务网关与用户身份识别,服务提供者之间的会话共享关系
分布式session的几种解决方案,你中意哪种?
我发现了一个商城,我还没有登录,就可以往购物车中添加商品,加了好几件后,我准备付款,需要我先去登录,登录完之后付款。
Java旅途
2021/05/10
3400
分布式session的几种解决方案,你中意哪种?
高性能开发(2) Redis缓存实现分布式session共享(一)
高性能开发(2) Redis缓存实现分布式session共享(一)
Java架构师必看
2021/06/11
5280
高性能开发(2) Redis缓存实现分布式session共享(一)
推荐阅读
相关推荐
帅气的 Spring Session 功能,基于 Redis 实现分布式会话,还可以整合 Spring Security!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验