追尔教育 - View Article

redis NoSql数据库开发

发布时间: 2017-11-23 阅读数: 19800

Redis

NoSql数据库

 

        课程计划

         redis介绍

           什么是NoSql

           NoSql的分类

           什么是redis

           Redis应用场景

         redis安装(重点

         redis客户端

           redis自带客户端

           图形界面的客户端(了解)

           Java客户端jedis重点

         Redis数据类型(重点

           String类型

           Map类型

           List类型

           Set类型

           SortedSet

         Keys命令(了解)

         Redis的持久化方案

           Rbd方式

           Aof方式

         Redis的主从复制

         Redis的集群(重点

         Jedis连接redis集群

 

        Redis介绍

               什么是NoSql

为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql

 

NoSql,叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。

 

               NoSql的分类

           键值(Key-Value)存储数据库

相关产品: Tokyo Cabinet/TyrantRedisVoldemortBerkeley DB

典型应用: 内容缓存,主要用于处理大量数据的高访问负载。

数据模型: 一系列键值对

优势: 快速查询

劣势: 存储的数据缺少结构化

 

           列存储数据库

相关产品:Cassandra, HBase, Riak

典型应用:分布式的文件系统

数据模型:以列簇式存储,将同一列数据存在一起

优势:查找速度快,可扩展性强,更容易进行分布式扩展

 劣势:功能相对局限

           文档型数据库

相关产品:CouchDBMongoDB

典型应用:Web应用(与Key-Value类似,Value是结构化的)

数据模型: 一系列键值对,json/bson

 优势:数据结构要求不严格

 劣势: 查询性能不高,而且缺乏统一的查询语法

           图形(Graph)数据库

相关数据库:Neo4JInfoGridInfinite Graph

典型应用:社交网络

数据模型:图结构

优势:利用图结构相关算法。

劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

 

               什么是redis

Redis是使用c语言开发的一个高性能键值数据库。Redis可以通过一些键值类型来存储数据。

键值类型:

String字符类型

map散列类型

list列表类型

set集合类型

sortedset有序集合类型

 

               redis历史发展

         2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人 Salvatore Sanfilippo便 MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis 不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望更多的人使用它,于是在同一年Salvatore SanfilippoRedis开源发布,并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发,直到今天。

         Salvatore Sanfilippo自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。Hacker News2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、街旁网、知乎网,国外如GitHubStack OverflowFlickr等都是Redis的用户。

         VMware公司从2010年开始赞助Redis的开发, Salvatore SanfilippoPieter Noordhuis也分别在3月和5月加入VMware,全职开发Redis

 

               redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。最多使用

分布式集群架构中的session分离。

聊天室的在线好友列表。

任务队列。(秒杀、抢购、12306等等)

应用排行榜。

网站访问统计。

数据过期处理(可以精确到毫秒)

 

        redis安装

               redis下载

官网地址:http://redis.io/

下载地址:http://download.redis.io/releases/ HYPERLINK "http://download.redis.io/releases/redis-3.0.0.tar.gz" HYPERLINK "http://download.redis.io/releases/redis-3.0.0.tar.gz" HYPERLINK "http://download.redis.io/releases/redis-3.0.0.tar.gz"redis-3.0.0.tar.gz

 

               redis的安装

redis的安装环境会安装到linux系统中。

 

第一步:安装VMware,并且在VMware中安装centos系统(参考linux教程)。

第二步:将redis的压缩包,上传到linux系统

第三步:对redis的压缩包进行解压缩

Redis解压缩之后的文件是用c语言写的源码文件

[root@itheima ~]# tar -zxf redis-3.0.0.tar.gz

 

第四步:安装c语言环境(安装centos之后,自带c语言环境)

[root@itheima ~]# yum install gcc-c++

第五步:编译redis源码

[root@itheima ~]# cd redis-3.0.0

[root@itheima redis-3.0.0]# make

 

第六步:安装redis

[root@itheima redis-3.0.0]# make install PREFIX=/usr/local/redis19

 

第七步:查看是否安装成功

 

 

 

 

               redis启动

                   前端启动

前端启动的命令:

         [root@itheima bin]# ./redis-server

前端启动的关闭:

         强制关闭:Ctrl+c

         正常关闭:[root@itheima bin]# ./redis-cli shutdown

 

启动界面:

 

前端启动的问题:

         一旦客户端关闭,则redis服务也停掉。

 

 

                   后端启动

 

第一步:需要将redis解压之后的源码包中的redis.conf文件拷贝到bin目录下

[root@itheima bin]# cp /root/redis-3.0.0/redis.conf ./

 

第二步:修改redis.conf文件,将daemonize改为yes

先要使用vim redis.conf

 

第三步:使用命令后端启动redis

[root@itheima bin]# ./redis-server redis.conf

第四步:查看是否启动成功

 

关闭后端启动的方式:

 

强制关闭:[root@itheima bin]# kill -9 5071

正常关闭:[root@itheima bin]# ./redis-cli shutdown

 

在项目中,建议使用正常关闭。

因为redis作为缓存来使用的话,将数据存储到内存中,如果使用正常关闭,则会将内存数据持久化到本地之后,再关闭。

 

如果是强制关闭,则不会进行持久化操作,可能会造成部分数据的丢失。

 

        Redis客户端

               Redis自带的客户端

           启动

启动客户端命令:[root@itheima bin]# ./redis-cli -h 127.0.0.1 -p 6379

-h:指定访问的redis服务器的ip地址

-p:指定访问的redis服务器的port端口

 

还可以写成:[root@itheima bin]# ./redis-cli

使用默认配置:默认的ip127.0.0.1】,默认的port6379

           关闭

Ctrl+c

127.0.0.1:6379> quit

 

               图形界面客户端

安装文件位置:

 

安装之后,打开如下:

 

防火墙设置:

[root@itheima redis-3.0.0]# vim /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

~                                                                                                    

~                                                                                                     

~                                                                                                    

~                                                                                                    

~                                                                                                     

~                                                                                                    

~                                                                                                    

~                                                                                                    

~                                                                                                     

~                                                                                                    

~                                                                                                     

"/etc/sysconfig/iptables" 16L, 677C 已写入                                         

[root@itheima redis-3.0.0]# service iptables restart

iptables:清除防火墙规则:                                 [确定]

iptables:将链设置为政策 ACCEPTfilter                    [确定]

iptables:正在卸载模块:                                   [确定]

iptables:应用防火墙规则:                                 [确定]

[root@itheima redis-3.0.0]#

 

 

 

Redis.conf中的数据库数量的设置:

 

选择数据库的方式:

使用select 加上数据库的下标 就可以选择指定的数据库来使用,下标从0开始

127.0.0.1:6379> select 15

OK

127.0.0.1:6379[15]>

               Jedis客户端

                   jedis介绍

         Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如javaCC#C++phpNode.jsGo等。

         在官方网站里列一些Java的客户端,有JedisRedissonJredisJDBC-Redis、等其中官方推荐使用JedisRedisson 在企业中用的最多的就是Jedis,下面我们就重点学习下Jedis

Jedis同样也是托管在github上,地址:https://github.com/xetorthio/jedis

 

                   工程搭建

添加jar

 

分享到:

我的回复:

回复前请先 登录 注册

关于我们

这是一个在线直播学习平台
你可以在这里学习你喜爱的课程

关注我们

gongzhonghao.jpg

Powered by zhuir   沪ICP备15027604号  沪公网安备:31011302004922     Copyright © 2013-2024