NoSql简述及Redis入门

NoSql

NoSQL(Not only SQL),泛指非关系型的数据库。

为什么有NoSql

互联网项目特点: 数据库高并发读写,海量数据高效率存储,可扩展。
随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

分类

  • 键值(Key-Value)存储数据库
    这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB。
  • 列存储数据库
    这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
  • 文档型数据库
    文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
  • 图形(Graph)数据库
    图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。

特点

对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:

  • 易扩展
    NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间,在架构的层面上带来了可扩展的能力。
  • 大数据量,高性能
    NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般MySQL使用Query Cache。NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说性能就要高很多。
  • 灵活的数据模型
    NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是——个噩梦。这点在大数据量的Web 2.0时代尤其明显。
  • 高可用
    NoSQL在不太影响性能的情况,就可以方便地实现高可用的架构。比如Cassandra、HBase模型,通过复制模型也能实现高可用。

适用场景

NoSQL数据库在以下的这几种情况下比较适用:
1. 数据模型比较简单;
2. 需要灵活性更强的IT系统;
3. 对数据库性能要求较高;
4. 不需要高度的数据一致性;
5. 对于给定key,比较容易映射复杂值的环境。

Redis

简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

特点

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

应用场景

  • 缓存(数据查询、短连接、新闻内容、商品内容等等)。
  • 聊天室的在线好友列表。
  • 任务队列。(商品秒杀、抢购、12306等等)。
  • 应用排行榜。
  • 网站访问统计。
  • 数据过期处理(可以精确到毫秒)。
  • 分布式集群架构中的session分离。

安装

redis建议安装在Linux服务器上运行测试,本教程使用Linux虚拟机及SSH客户端进行功能测试。

搭建环境

  • 虚拟机
    VMware 10.0.2
  • Linux系统
    CentOS-6.5 32位操作系统
  • SSH客户端
    远程命令端:SecureCRT 7.3
    FTP端:SecureFX 7.3

安装GCC

Redis是C语言开发的,安装Redis需要先将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc环境,需要先安装gcc:

yum install gcc-c++

安装Redis

  • 步骤1:将Windows下载的压缩文件上传到Linux下。通过SecureCRT进行上传。
  • 步骤2:解压文件
tar -zxvf redis-x.x.x.tar.gz
  • 步骤3:编译redis(将.c文件编译为.o文件)
    进入解压文件夹,执行make命令
cd redis-x.x.x
make
  • 步骤4:安装
make PREFIX=/usr/local/redis install

安装完后,在/usr/local/redis下有以下几个可执行文件
|文件名|描述|
|-|-|
|redis-benchmark|性能测试工具|
|redis-check-aof|AOF文件修复工具|
|redis-check-dump|RDB文件检查工具|
|redis-cli|命令行客户端|
|redis-server|redis服务器启动命令|
* 步骤5:复制配置文件
redis启动需要一个配置文件,配置端口号等信息。
把之前解压的包中的配置文件复制到安装目录即可。

cp redis.conf /usr/local/redis

启动Redis

前端模式启动

直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是启动完成后,不能再进行其他操作,不推荐此方法。

/usr/local/redis/bin/redis-server

后端模式启动

  • 修改redis.conf配置文件,将daemonize的值改为yes。
vim /usr/local/redis/redis.conf

找到daemonize将值修改为yes。
* 启动redis,指定配置文件

cd /usr/local/redis/
./bin/redis-server ./redis.conf
  • 启动完查看是否存在redis进程
ps -ef |grep -i redis

停止Redis

强制结束Redis进程可能会导致Redis持久化数据丢失。
正确停止应是向Redis发送SHUTDOWN命令

cd /usr/local/redis/
./bin/redis-cli shutdown

使用测试

连接客户端

在redis的安装目录中有redis的客户端,即redis-cli(Redis Command Line Interface),它是redis自带的基于命令行的Redis客户端。

redis-cli -h Redis服务器IP地址 -p 端口

Redis默认的端口是6379。

向Redis服务器发送命令

Redis-cli连上Redis服务后,可以在命令行发送命令。
* ping,测试客户端与Redis的连接是否正常,如果正常会收到回复PONG

> ping
PONG
  • set/get 使用set和get向Redis设置数据、获取数据。
> set name kxblog
OK
> get name
"kxblog"
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇