NoSQL数据库分类
1.键值(Key-Value)存储数据库
相关数据库:Redis
应用: 内容缓存,主要用于处理大量数据的高访问负载
数据模型: 一系列键值对
优势: 快速查询
劣势: 存储的数据缺少结构化 列存储数据库
2.文档型数据库
相关数据库:MongoDB
应用:Web应用(与Key-Value类似,Value是结构化的) 数据模型: 一系列键值对
优势:数据结构要求不严格
劣势: 查询性能不高,而且缺乏统一的查询语法
3.图形(Graph)数据库
相关数据库:Neo4J、InfoGrid、Infinite Graph
典型应用:社交网络 数据模型:图结构
优势:利用图结构相关算法。
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。
Redis:
- 关系型数据库 和 非关系型数据库:
关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql数据库要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,所以在实际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证。
-
redis是一种高级的key-value的存储系统
其中的key是字符串类型,尽可能满足如下几点:key不要太长,最好不要超过1024个字节,这不仅会消耗内存还会降低查找 效率
key不要太短,如果太短会降低key的可读性
在项目中,key最好有一个统一的命名规范(根据企业的需求) -
其中value 支持的数据类型有:
1.字符串-string
2.list (List类型是按照插入顺序排序的字符串链表)
3.set(可以将Set类型看作为没有排序的字符集合)
4.hash
Jedis是Redis官方推荐的面向Java的操作Redis的客户端,封装了redis的java客户端。提供了连接池管理。一般不直接使用jedis,而是在其上在封装一层,作为业务的使用;
spring-data-redis提供了redis的java客户端的抽象,在开发中可以忽略掉切换具体的客户端所带来的影响,而且他本身就属于spring的一部分,比起单纯的使用jedis,更加稳定.管理起来更加自动化