一.noSql


指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。



NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。




RDBMS vs NoSQL



RDBMS 



- 高度组织化结构化数据 



- 结构化查询语言(SQL) (SQL) 



- 数据和关系都存储在单独的表中。 



- 数据操纵语言,数据定义语言 



- 严格的一致性



- 基础事务



NoSQL 



- 代表着不仅仅是SQL



- 没有声明性查询语言



- 没有预定义的模式



-键 - 值对存储,列存储,文档存储,图形数据库



- 最终一致性,而非ACID属性



- 非结构化和不可预知的数据



- CAP定理 



- 高性能,高可用性和可伸缩性






NoSQL的优点/缺点



优点:



- 高可扩展性



- 分布式计算



- 低成本



- 架构的灵活性,半结构化数据



- 没有复杂的关系



缺点:



- 没有标准化



- 有限的查询功能(到目前为止)



- 最终一致是不直观的程序





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 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。



Redis 与其他 key - value 缓存产品有以下三个特点:



Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。



Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。



Redis支持数据的备份,即master-slave模式的数据备份。






      Redis应用场景: 1.缓存 2、任务队列 3、应用排行榜 4、网站访问统计 5、数据过期处理 



 6、分布式集群架构中的Session 分离



三.redis的安装





Window 下安装

下载地址:https://github.com/MSOpenTech/redis/releases

Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。


redis和jedis版本号 jedis与redis对应版本_redis和jedis版本号

cmd 窗口 使用cd命令切换目录到 C:\redis 运行 redis-server.exe redis.windows.conf

如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:



redis和jedis版本号 jedis与redis对应版本_redis_02



这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。

redis-cli.exe -h 127.0.0.1 -p 6379

set myKey abc

get myKey


redis和jedis版本号 jedis与redis对应版本_Redis_03


Linux 下安装





准备工作: 需要通过gcc编译工具,所以有的人在make后会报错,我们需要执行以下命令






yum install gcc-c++



两次输入 y 安装完成 即可make





下载地址:http://redis.io/download,下载最新文档版本。

本教程使用的最新文档版本为 2.8.17,下载并安装:

$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz
$ tar xzf redis-4.0.6.tar.gz
$ cd redis-4.0.6
$ make

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

下面启动redis服务.

$ cd src
$ ./redis-server

注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

$ cd src
$ ./redis-server  ../redis.conf

redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"





测试案例:


  新建java项目,导入所需jar包


commons-pool2-2.5.0.jar



jedis-2.9.0.jar




package jedis;

import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisDemo {

	@Test
	public void demo1() {
		//1.设置ip地址及端口
		Jedis jedis=new Jedis("192.168.8.134",6379);
		//保存数据
		jedis.set("name", "java");
		System.out.println(jedis.get("name"));
		//释放资源
		jedis.close();
	}
	@Test
	/**
	 * 通过jedis连接池来获取对象
	 */
	public void demo2() {
		//获取连接池配置对象
		JedisPoolConfig  config=new JedisPoolConfig();
		//设置最大连接数
		config.setMaxTotal(30);
		//设置最大空闲连接数
		config.setMaxIdle(10);
		//获得连接池
		JedisPool jedisPool=new JedisPool(config,"192.168.8.134" ,6379);
		
		//获得对象
		Jedis jedis=jedisPool.getResource();
		
		jedis.set("name", "redis");
		String value=jedis.get("name");
		System.out.println(value);
		if (jedis!=null) {
			jedis.close();
		}
		if (jedisPool!=null) {
			jedisPool.close();
		}
	}
}





此时我们发现报连接拒绝错误:


  


  1.因为我们没更改防火墙,所以我们要做的是打开防火墙配置文件




vim  /etc/sysconfig/iptables




配置如下




redis和jedis版本号 jedis与redis对应版本_Redis_04




    可以在端口号22处yy 再按p ,黏贴复制,然后将端口号改为6379




保存退出




重启防火墙 service iptables restart




出现了一个小插曲,当时设置的时候6379多打了一个9结果在测试的时候报连接超时错误




2.此刻若发现还是报拒绝错误,需要更改redis.conf文件




vim redis.conf




将此处的127.0.0.1改为0.0.0.0 ,如图




redis和jedis版本号 jedis与redis对应版本_redis和jedis版本号_05






此时必须重启redis服务才能生效


  


  关闭redis服务 


 

redis和jedis版本号 jedis与redis对应版本_redis和jedis版本号_06



./redis-cli -h 127.0.0.1 -p 6379 shutdown




启动redis服务


redis和jedis版本号 jedis与redis对应版本_Redis_07




./redis-server ../redis.conf