第一章 NoSQL概述
什么是NoSQL
-
NoSQL = Not Only SQL
-
非关系型的数据库
为什么需要NoSQL
-
高并发读写
-
海量数据的高效率存储和访问
-
高可扩展性和高可用性
NoSQL数据库的四大分类
-
键值对存储(Redis):优势是快速查询,劣势是存储缺少结构化
-
列存储(HBase):优势查找速度快,劣势是相对功能局限
-
文档数据库(MongoDB):优势数据结构要求不是特别严格,劣势是查询性能不够高,缺少统一语法。
-
图形数据库:优势是利用图结构的相关算法,劣势是需要对整个图做计算才能得到相对的结果,不容易做分布式的集群方案。
四类NoSQL数据库比较
NoSQL的特点
-
易扩展:没有传统SQL的各种关系
-
灵活的数据模型
-
大数据量,高性能
-
高可用
总结:NoSQL的在目前这种大的网络数据量下,为了适应web2.0而被广泛的使用,其中使用最多的就是Redis。
第二章 Redis概述
Redis的由来
2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统 LLOOGG,然而没过多久该公司的创始人 Salvatore Sanfilippo 便对MySQL 的性能感到失望,于是他决定亲自为 LLOOGG 量身定做一个 数据库,并并于 2009 年开发完成,这个数据库就是Redis。不过Salvatore Sanfilippo并不满足只将 Redis 用于LLOOGG这一款产品,而是希望更多的人使用它,于是在同一年 Salvatore Sanfilippo 将 Redis 开源发布,并开始和 Redis 的另一名主要的代码贡献者 Pieter Noordhuis 一起继续着 Redis 的开发,直到今天。Salvatore Sanfilippo 自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。Hacker News 在 2012 年发布了一份数据库的使用情况调查,结果显示有近 12% 的公司在使用 Redis。国内如 新浪微博、街旁网、知乎网,国外如GitHub、Stack Overflow、Flickr等都是Redis的用户。VMware 公司从2010年开始赞助 Redis 的开发,Salvatore Sanfilippo和 Pieter Noordhuis 也分别在3月和5月加入VMware,全职开发Redis。
Redis是一款用C语言开发的,开源的,高性能的,键值对的数据库。
高性能键值对数据库,支持的键值数据类型
-
字符串类型
-
列表类型
-
有序集合类型
-
散列类型
-
集合类型
Redis的应用场景
-
缓存
-
任务队列
-
网站访问统计
-
数据过期的处理
-
分布式集群架构中的session分离
第三章 Redis的安装
搭建环境(macOS High Sierra)
-
虚拟机:Parallels Desktop
-
Linus系统:CentOS Linux release 7.2.1511 (Core)
-
Mac系统自带SSH,无需安装客户端。打开SSH方法:点击Mac顶部菜单-->“苹果”图标-->最近使用的项目-->终端--输入 open ~/.ssh 。
CentOS安装Redis
Redis是C语言开发,安装Redis需要先将官网上下载的源码进行编译,编译依赖gcc环境。
在线安装gcc:yum install gcc-c++
如果提示是否安装,输入:y
安装成功会提示:
安装Redis:
Mac与Windows不同,不需要可视化软件进行拖拽,可以通过终端进行传输,也可以直接通过Linus下命令行,在Linus系统进行下载。
1.下载源码,解压后编译源码
wget http://download.redis.io/releases/redis-2.8.3.tar.gz
tar xzf redis-2.8.3.tar.gz
cd redis-2.8.3
make
2.编译完成后,在src目录下,有四个可执行文件,redis-server,redis-benchmark,redis-cli,redis.conf。然后拷贝到一个目录下。
mkdir /usr/redis
cp redis-server /usr/redis
cp redis-benchmark /usr/redis
cp redis-cli /usr/redis
cp redis.conf /usr/redis //redis.conf 与src在统计目录下
cd /usr/redis
3.启动Redis服务(前端启动)
./redis-server 使用command+c 停止前端启动方式
4.启动Redis服务(后端启动)
后端启动需要修改redis.conf文件内容:vim redis.conf
找到daemonize no,把no改为yes,然后退出并保存文件。
./redis-server redis.conf --->启动Redis
ps -ef | grep -i redis 命令输入之后可以看到默认端口6379
root 31091 1 0 18:25 ? 00:00:00 ./redis-server *:6379
root 31366 28640 0 18:26 pts/0 00:00:00 grep --color=auto -i redis
5.停止Redis服务
./redis-cli shutdown
6.验证连接
./redis-cli : 启动Redis客户端
得到<127.0.0.1:6379>
这时候在输入ping
得到PONG
证明连接成功
7.Redis存入数据
set/get(键值对的类型):
set name ergou
get name
key * :查看Redis中所有的key
第四章 Jedis入门
在实际开发中,我们通常使用一些程序向Redis中保存数据,或者是获取数据,所以我们要学习Jedis,Jedis就是Redis的一个连接的基本操作。
Jedis介绍
-
Jedis是Redis官网首选的Java客户端的开发包
-
Https://github.com/xetorthio/jedis Jedis托管到github上的下载地址
构建Java项目,测试jedis
所需jar包:
-
commons-pool2-2.3.jar
-
jedis-2.7.2.jar
jar包下载地址:http://jareye.com/jar/Ef5F0Tpg.html?q=commons-pool#download
找到Linus的防火墙设置文件,在编辑:vim /etc/sysconfig/iptables
找到文件中的:A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT ,把这行复制(yy),再粘贴到这行下面,修改端口号为6379,如下:-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT。
然后重启防火墙设置:service iptables restart,如果出现:Redirecting to /bin/systemctl restart iptables.service,意思是重启防火墙失效,那是因为CenterOS在版本升级之后就修改了service命令。如下:systemctl restart iptables.service,然后iptables -L。
Jedis发送/获取数据的两种方式
jedis单实例的测试 :
public void demo1() {
// 1.设置IP地址和端口;
Jedis jedis = new Jedis("192.168.30.130", 6379);
// 2.保存数据;
jedis.set("name", "王二狗");
// 3.获取数据;
String value = jedis.get("name");
System.out.println(value);
// 4.释放资源
jedis.close();
}
连接池方式连接 :
public void demo2() {
//获得连接池配置的对象
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(30);
//设置最大的空闲连接数
config.setMaxIdle(10);
//获得连接池
JedisPool jedispool = new JedisPool(config,"192.168.30.130",6379);
//获得核心对象
Jedis jedis = null;
try {
//通过连接池获得连接
jedis = jedispool.getResource();
//设置数据
jedis.set("name", "cnmd");
//获得数据
String value = jedis.get("name");
System.out.println(value);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
if(jedis != null) {
jedis.close();
}
if(jedispool != null) {
jedispool.close();
}
}
}