一.Nosql介绍
Nosql(Not Only sql),意为反sql运动,是一项合新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。它指的是非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
Nosql是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循sql标准、ACID属性、表结构等等,这类数据库主要有以下特点:非关系型的、分布式的、开源的、水平可扩展的。
二.Nosql特点
1.处理超大量的数据
2.运行在便宜的PC服务器集群上
3.击碎了性能瓶劲
三.Nosql适用场景
1.对数据高并发读写
2.对海量数据的高效率存储和访问(fielFeed:一个月有2.5亿用户动态)
3.对数据的高可扩展性和高可用性
四.Redis的介绍
Redis is an open source,advanced key-value store.It is often referred to as a data structure server since keys can contain strings,hashes,lists,sets and sorted sets.
Redis是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串,哈希,链表,集合和有序集合。
Redis是一个Key-Value存储系统。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集和并集及更丰富的操作,Redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
Redis提供的API语言包括:C、C++、C#、Clojure、Common Lisp、Erlang、Haskell、Java、Javascript、Lua、Objective-C、Perl、PHP、Python、Ruby Scala、Go、Tcl。
目前全球最大的Redis用户是新浪微博,在新浪有200多台物理机,400多个端口正在运行着Redis,有+4G的数据在Redis上来为微博用户提供服务。
在新浪微博Redis的部署场景很多,大概分为如下的两种:
a.应用程序直接访问Redis数据库
b.应用程序直接访问Redis,只有当Redis访问失败时才访问MysqL
Redis数据库提供多种灵活的数据结构和数据操作,为不同的数据提供不同的数据类型。
五.Redis具体适用场合
1.取最新N个数据的操作
2.排行榜应用,取TOP N操作
3.需要精确设定过期时间的应用
4.计数器应用
5.Uniq操作,获取某段时间所有数据排重值
6.实时系统,反垃圾系统
7.Pub/Sub构建实时消息系统
8.构建队列系统
9.缓存
六.redis、MysqL、mongoDB的比较
七.Redis的安装与部署
Redis的官方下载站是:http://redis.io/download
步骤一:下载安装包
wget http://redis.goolecode.com/files/redis-2.4.17.tar.gz
步骤二:编译源程序
tar zxvf redis-2.4.17.tar.gz cd redis-2.4.17 make cd src && make install
步骤三:移动文件,便于管理
mkdir -p /usr/local/redis/bin mkdir -p /usr/local/redis/etc mv /lamp/redis-2.4.17/redis.conf /usr/local/redis/etc cd /lamp/redis-2.4.17/src mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
步骤四:启动Redis服务
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
Redis服务端的默认连接端口是6379(MysqL的端口号是:3306;mongoDB的端口号是:27017,28017)。
默认情况下,Redis不是在后台运行的,我们需要把开启Redis的后台运行。
vi /usr/local/redis/redis.conf
将daemonize的值改为yes。
启动后看进程是否启动
ps -ef | grep redis
看指定的端口号是否占用
netstat -tunpl | grep 6379
步骤五:客户端连接
/usr/local/redis/bin/redis-cli
步骤六:停止Redis实例
我们可以使用
/usr/local/redis/bin/redis-cli shutdown
也可以使用
pkill redis-server
当然,也可以使用kill all,kill -9。
八.Redis的配置
daemonize:如果需要在后台运行,把该项心为yes
pidfile:配置多个pid的地址,默认在/var/run/redis.pid
bind:绑定ip,设置后只接受来自该ip的请求
port:监听端口,默认为6379
timeout:设置客户端连接时的超时时间,单位为秒
loglevel:分为4级,debug、verbose、notice、warning
logfile:配置log文件地址
save:设置redis进行数据库镜像的频率
rdbcompression:在进行镜像备份时,是否进行压缩
Masterauth:主数据库连接需要的密码验证
Maxclients:限制同时连接的客户数量
Maxmemory:设置redis能够使用的最大内存
Appendonly:开启append only模式
Appendfsync:设置对appendonly.aof文件同步的频率
vm-enabled:是否开启虚拟内存支持
vm-swap-file:设置虚拟内存的交换文件路径
vm-max-memory:设置redis使用的最大物理内存大小
vm-page-size:设置虚拟内存的页大小
vm-max-threads:设置VMIO同时使用的线程数量
Glueoutputbuf:把小的输出缓存存放在一起
hash-max-zipmap-entries:设置hash的临界值
Activerehashing:重新hash