【捷哥浅谈PHP】第十七弹---NoSQL数据库之Redis的介绍及安装
来源:互联网 发布:淘宝该券是兑换型 编辑:程序博客网 时间:2024/04/28 23:45
很久没跟大家见面了,这段时间一直在研究Redis,下面我来给大家介绍一下这种数据库,
可能很多同学都看过我的《捷哥浅谈PHP》的NoSQL之MongoDB的系列文章,本文讲给大家介绍另一款
较流行的NoSQL数据库Redis数据库,了解过NoSQL数据库的童鞋都知道,NoSQL更注重的是对
海量数据存取的性能、分布式、扩展性支持上,并不需要传统关系数据库的一些特征,例如:
Schema、事务、完整SQL查询支持等等,因此在分布式环境下的性能相对与传统的关系数据库有较大的提升。
而我们的Redis就是NoSQL这个大家族中的一份子,它是一个开源的使用ANSI C语言编写、支持网络、可基于内存也可
持久化的日志型、Key-Value数据库(注意,Redis同MongoDB,同样是Key-Value数据库),并提供多种语言的API。
我们来看一下Redis官方(http://www.redis.io)的介绍:
Redis is an open source, advanced key-value store.
Redis是一个开源的,高级的键值式存储数据库。
It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.
它通常被称为一个数据结构服务器可以包含字符串,哈希表,链表,集合和有序集合。
In order to achieve its outstanding performance, Redis works with an in-memory dataset.
为了实现其出色的表现,Redis是工作在内存中的数据集。
Depending on your use case, you can persist it either by dumping the dataset to disk every once in a while, or by appending each command to a log.
您还可以根据您的具体的使用情况,每隔一段时间或执行命令时将数据集写入到磁盘,并且添加到日志中。
Redis also supports trivial-to-setup master-slave replication, with very fast non-blocking first synchronization, auto-reconnection on net split and so forth.
Redis还支持主从复制,并且配置起来很简单,第一次同步就可以无阻塞的达到极快的速度,在网络断开的时候可以自动重连等等。
Other features include a simple check-and-set mechanism, pub/sub and configuration settings to make Redis behave like a cache.
另外它的简单的检查与设置机制,发布(Publish)与订阅(Subscribe)和配置设置的特性使它看起来像是一个缓存。
另外我们的Redis数据库同样支持事务处理,这是MongoDB所不能及的,稍后的文章会给大家详细
介绍Redis的7种数据类型及使用方法,
那我们哪些地方可以使用到Redis数据库呢?
下面我们来看下Redis的适用场景:
1、取最新N 个数据的操作
比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000 条评论的ID 放在Redis 的List 集合中,
并将超出集合部分从数据库获取。
2、排行榜应用,取TOP N 操作
这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,
这时候就需要我们的sorted set 出马了,将你要排序的值设置成sorted set 的score,将具体的数据设置成相应的value,
每次只需要执行一条ZADD 命令即可。
3、需要精准设定过期时间的应用
比如你可以把上面说到的sorted set 的score 值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,
定时清除过期数据了,不仅是清除Redis 中的过期数据,你完全可以把Redis 里这个过期时间当成是对数据库中数据的索引,
用Redis 来找出哪些数据需要过期删除,然后再精准地从数据库中删除相应的记录。
4、计数器应用
Redis 的命令都是原子性的,你可以轻松地利用INCR,DECR 命令来构建计数器系统。
5、Uniq 操作,获取某段时间所有数据排重值
这个使用Redis 的set 数据结构最合适了,只需要不断地将数据往set 中扔就行了,set 意为集合,所以会自动排重。
6、实时系统,反垃圾系统
通过上面说到的set 功能,你可以知道一个终端用户是否进行了某个操作,可以找到其操作的集合并进行分析统计对比等。
没有做不到,只有想不到。
7、Pub/Sub 构建实时消息系统
Redis 的Pub/Sub 系统可以构建实时的消息系统,比如很多用Pub/Sub 构建的实时聊天系统的例子。
8、构建队列系统
使用list 可以构建队列系统,使用sorted set 甚至可以构建有优先级的队列系统。
9、缓存
这个不必说了,性能优于Memcached,数据结构更多样化。
好,下一步我们来将Redis数据库安装好:
第一步,下载Redis,可以通过官网(http://www.redis.io/download)下载最新版本的源代码包:
第二步,将下载好的源代码包上传到我们的Linux主机中,并编译安装:
这里我们将redis-2.4.16.tar.gz源码包上传到我们Linux系统的/lamp目录下,然后解压,编译安装,
第三步,为了便于管理,我们将安装好的Redis移动到/usr/local/redis下
第四步,启动redis服务:
Redis服务器的端口默认是6379,但是你会发现Redis服务会一直占用我们当前登录Linux的SESSION,那能否像Mysql
或者是MongoDB一样在后台执行Redis进程呢,当然可以,我们只需要更改Redis的配置文件,并且启动的时候指定配置文件即可!
如果是一个专业的DBA,那么实例启动时会加很多参数以便是系统运行的非常稳定,这样就可能在启动时
在Redis后面加一个参数,以指定配置文件的路径,就像mysql一样的读取启动配置文件的方式来启动数据库。
我们来看Redis的配置文件redis.conf里面都有什么:
可能很多同学都看过我的《捷哥浅谈PHP》的NoSQL之MongoDB的系列文章,本文讲给大家介绍另一款
较流行的NoSQL数据库Redis数据库,了解过NoSQL数据库的童鞋都知道,NoSQL更注重的是对
海量数据存取的性能、分布式、扩展性支持上,并不需要传统关系数据库的一些特征,例如:
Schema、事务、完整SQL查询支持等等,因此在分布式环境下的性能相对与传统的关系数据库有较大的提升。
而我们的Redis就是NoSQL这个大家族中的一份子,它是一个开源的使用ANSI C语言编写、支持网络、可基于内存也可
持久化的日志型、Key-Value数据库(注意,Redis同MongoDB,同样是Key-Value数据库),并提供多种语言的API。
我们来看一下Redis官方(http://www.redis.io)的介绍:
Redis is an open source, advanced key-value store.
Redis是一个开源的,高级的键值式存储数据库。
It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.
它通常被称为一个数据结构服务器可以包含字符串,哈希表,链表,集合和有序集合。
In order to achieve its outstanding performance, Redis works with an in-memory dataset.
为了实现其出色的表现,Redis是工作在内存中的数据集。
Depending on your use case, you can persist it either by dumping the dataset to disk every once in a while, or by appending each command to a log.
您还可以根据您的具体的使用情况,每隔一段时间或执行命令时将数据集写入到磁盘,并且添加到日志中。
Redis also supports trivial-to-setup master-slave replication, with very fast non-blocking first synchronization, auto-reconnection on net split and so forth.
Redis还支持主从复制,并且配置起来很简单,第一次同步就可以无阻塞的达到极快的速度,在网络断开的时候可以自动重连等等。
Other features include a simple check-and-set mechanism, pub/sub and configuration settings to make Redis behave like a cache.
另外它的简单的检查与设置机制,发布(Publish)与订阅(Subscribe)和配置设置的特性使它看起来像是一个缓存。
另外我们的Redis数据库同样支持事务处理,这是MongoDB所不能及的,稍后的文章会给大家详细
介绍Redis的7种数据类型及使用方法,
那我们哪些地方可以使用到Redis数据库呢?
下面我们来看下Redis的适用场景:
1、取最新N 个数据的操作
比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000 条评论的ID 放在Redis 的List 集合中,
并将超出集合部分从数据库获取。
2、排行榜应用,取TOP N 操作
这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,
这时候就需要我们的sorted set 出马了,将你要排序的值设置成sorted set 的score,将具体的数据设置成相应的value,
每次只需要执行一条ZADD 命令即可。
3、需要精准设定过期时间的应用
比如你可以把上面说到的sorted set 的score 值设置成过期时间的时间戳,那么就可以简单地通过过期时间排序,
定时清除过期数据了,不仅是清除Redis 中的过期数据,你完全可以把Redis 里这个过期时间当成是对数据库中数据的索引,
用Redis 来找出哪些数据需要过期删除,然后再精准地从数据库中删除相应的记录。
4、计数器应用
Redis 的命令都是原子性的,你可以轻松地利用INCR,DECR 命令来构建计数器系统。
5、Uniq 操作,获取某段时间所有数据排重值
这个使用Redis 的set 数据结构最合适了,只需要不断地将数据往set 中扔就行了,set 意为集合,所以会自动排重。
6、实时系统,反垃圾系统
通过上面说到的set 功能,你可以知道一个终端用户是否进行了某个操作,可以找到其操作的集合并进行分析统计对比等。
没有做不到,只有想不到。
7、Pub/Sub 构建实时消息系统
Redis 的Pub/Sub 系统可以构建实时的消息系统,比如很多用Pub/Sub 构建的实时聊天系统的例子。
8、构建队列系统
使用list 可以构建队列系统,使用sorted set 甚至可以构建有优先级的队列系统。
9、缓存
这个不必说了,性能优于Memcached,数据结构更多样化。
好,下一步我们来将Redis数据库安装好:
第一步,下载Redis,可以通过官网(http://www.redis.io/download)下载最新版本的源代码包:
第二步,将下载好的源代码包上传到我们的Linux主机中,并编译安装:
这里我们将redis-2.4.16.tar.gz源码包上传到我们Linux系统的/lamp目录下,然后解压,编译安装,
- [root@localhost lamp]# cd /lamp
- [root@localhost lamp]# tar zxf redis-2.4.15.tar.gz
- [root@localhost lamp]# cd redis-2.4.15
- [root@localhost redis-2.4.15]# make
- cd src && make all
- make[1]: Entering directory `/lamp/redis-2.4.15/src'
第三步,为了便于管理,我们将安装好的Redis移动到/usr/local/redis下
- [root@localhost redis-2.4.15]# ll
- 总计 84
- -rw-rw-r-- 1 root root 12371 06-21 21:04 00-RELEASENOTES
- -rw-rw-r-- 1 root root 55 06-21 21:04 BUGS
- -rw-rw-r-- 1 root root 671 06-21 21:04 CONTRIBUTING
- -rw-rw-r-- 1 root root 1487 06-21 21:04 COPYING
- drwxrwxr-x 5 root root 4096 06-21 21:04 deps
- -rw-rw-r-- 1 root root 30 06-21 21:04 INSTALL
- -rw-rw-r-- 1 root root 397 06-21 21:04 Makefile
- -rw-rw-r-- 1 root root 2813 06-21 21:04 README
- -rw-rw-r-- 1 root root 21094 06-21 21:04 redis.conf
- -rwxrwxr-x 1 root root 162 06-21 21:04 runtest
- drwxrwxr-x 2 root root 4096 08-01 20:35 src
- drwxrwxr-x 8 root root 4096 06-21 21:04 tests
- drwxrwxr-x 2 root root 4096 06-21 21:04 utils
- [root@localhost redis-2.4.15]# mkdir /usr/local/redis
- [root@localhost redis-2.4.15]# mv redis.conf src /usr/local/redis/
- [root@localhost redis-2.4.15]# cd /usr/local/redis/
- [root@localhost redis]# ll
- 总计 28
- -rw-rw-r-- 1 root root 21094 06-21 21:04 redis.conf
- drwxrwxr-x 2 root root 4096 08-01 20:35 src
- [root@localhost redis]#
第四步,启动redis服务:
- [root@localhost redis]# src/redis-server
- [7113] 01 Aug 20:44:12 # Warning: no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf'
- [7113] 01 Aug 20:44:12 # Warning: 32 bit instance detected but no memory limit set. Setting 3.5 GB maxmemory limit with 'noeviction' policy now.
- [7113] 01 Aug 20:44:12 * Server started, Redis version 2.4.15
- [7113] 01 Aug 20:44:12 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
- [7113] 01 Aug 20:44:12 * The server is now ready to accept connections on port 6379
- [7113] 01 Aug 20:44:12 - 0 clients connected (0 slaves), 547464 bytes in use
Redis服务器的端口默认是6379,但是你会发现Redis服务会一直占用我们当前登录Linux的SESSION,那能否像Mysql
或者是MongoDB一样在后台执行Redis进程呢,当然可以,我们只需要更改Redis的配置文件,并且启动的时候指定配置文件即可!
如果是一个专业的DBA,那么实例启动时会加很多参数以便是系统运行的非常稳定,这样就可能在启动时
在Redis后面加一个参数,以指定配置文件的路径,就像mysql一样的读取启动配置文件的方式来启动数据库。
我们来看Redis的配置文件redis.conf里面都有什么:
- #是否作为守护进程运行
- daemonize yes
- #配置 pid 的存放路径及文件名,默认为当前路径下
- pidfile redis.pid
- #Redis 默认监听端口
- port 6379
- #客户端闲置多少秒后,断开连接
- timeout 300
- #日志显示级别
- loglevel verbose
- #指定日志输出的文件名,也可指定到标准输出端口
- logfile stdout
- #设置数据库的数量,默认连接的数据库是 0,可以通过 select N 来连接不同的数据库
- databases 16
- #保存数据到 disk 的策略
- #当有一条 Keys 数据被改变是,900 秒刷新到 disk 一次
- save 900 1
- #当有 10 条 Keys 数据被改变时,300 秒刷新到 disk 一次
- save 300 10
- #当有 1w 条 keys 数据被改变时,60 秒刷新到 disk 一次
- save 60 10000
- #当 dump .rdb 数据库的时候是否压缩数据对象
- rdbcompression yes
- #dump 数据库的数据保存的文件名
- dbfilename dump.rdb
- #Redis 的工作目录
- dir /home/falcon/redis-2.0.0/
- ########### Replication #####################
- #Redis 的复制配置
- # slaveof <masterip> <masterport>
- # masterauth <master-password>
- ############## SECURITY ###########
- # requirepass foobared
- ############### LIMITS ##############
- #最大客户端连接数
- # maxclients 128
- #最大内存使用率
- # maxmemory <bytes>
- ########## APPEND ONLY MODE #########
- #是否开启日志功能
- appendonly no
- # 刷新日志到 disk 的规则
- # appendfsync always
- appendfsync everysec
- # appendfsync no
- ################ VIRTUAL MEMORY ###########
- #是否开启 VM 功能
- vm-enabled no
- # vm-enabled yes
- vm-swap-file logs/redis.swap
- vm-max-memory 0
- vm-page-size 32
- vm-pages 134217728
- vm-max-threads 4
- ############# ADVANCED CONFIG ###############
- glueoutputbuf yes
- hash-max-zipmap-entries 64
- hash-max-zipmap-value 512
- #是否重置 Hash 表
- activerehashing yes
大家可以看到第一条就是启动后台进程启动Redis服务,将其设置为yes,就会在后台运行Redis服务啦!
我们启动的时候来指定redis的配置文件,
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
好啦,今天先讲到这里,下文将详细给大家介绍Redis的七种数据类型!敬请期待吧!
原文地址:http://bbs.lampbrother.net/read-htm-tid-122232.html
0
上一篇:强强老师的Linux那点事
下一篇:【分享】DolrPHP模板引擎DolrViews分享
相关热门文章
- hbase集群,zookeeper集群安装...
- 《数字技术与应用》征稿**投稿...
- qpid service 的root引发的权...
- 特求/回收Agilent E4403B E440...
- Ubuntu 10.10 下安装 apache记...
- IP Sec VPN与NAT破镜重圆
- 网站导航
- GoAgent图文设置教程
- UT2.0正式版下载
- tomcat6.0配置(含配置视频下载...
- 大家都是用什么来管理hadoop集...
- 网站被人挂了吗,添加了些程序...
- Nginx如何保证不走宕机的那个...
- 大家谈谈MYSQL客户端和服务器...
- 以下代码运行后为何会输出5?...
给主人留下些什么吧!~~
评论热议
- 【捷哥浅谈PHP】第十七弹---NoSQL数据库之Redis的介绍及安装
- 【捷哥浅谈PHP】第十八弹---NoSQL数据库Redis之莫问剑(String类型)的修炼
- 【捷哥浅谈PHP】第十九弹---NoSQL数据库Redis之游龙剑(hash类型)的修炼
- 【捷哥浅谈PHP】第二十弹---NoSQL数据库Redis之青干剑(lists类型)的修炼
- 【捷哥浅谈PHP】第二十一弹---NoSQL数据库Redis之舍神剑(set类型)的修炼
- NoSQL数据库之Redis的介绍及安装
- 【捷哥浅谈PHP】第十一弹---NoSQL数据库之MongoDB的CURD操作(二)
- 【捷哥浅谈PHP】第十二弹---NoSQL数据库之MongoDB的CURD操作(三)
- 【捷哥浅谈PHP】第十三弹---NoSQL数据库之MongoDB的CURD操作(四)
- 【捷哥浅谈PHP】第十二弹---NoSQL数据库之MongoDB的CURD操作
- 【捷哥浅谈PHP】第十二弹---NoSQL数据库之MongoDB的CURD操作
- NoSQL之Redis的介绍与安装
- NoSQL数据库之Redis数据库:Redis的介绍与安装部署
- NoSQL数据库之Redis数据库管理一(Redis的介绍与安装部署)
- 【捷哥浅谈PHP】第十四弹---NoSQL数据库之PHP连接MongoDB
- NoSQL数据库之Redis数据库管理五(Redis的常用命令及高级应用)
- NoSQL数据库之Redis数据库管理五(Redis的常用命令及高级应用)
- Redis-01-NoSQL简介及Redis数据库安装
- 这篇作文我语文老师给了我十五分,觉得该给十六分的请表示一下支持!!
- 给自己一个充实自己的机会
- switch与ifelse的效率问题
- 强强老师的Linux那点事
- mount: unknown filesystem type ‘ntfs’
- 【捷哥浅谈PHP】第十七弹---NoSQL数据库之Redis的介绍及安装
- Web Service That Returns An Array of Objects With KSOAP
- 【分享】DolrPHP模板引擎DolrViews分享
- 【捷哥浅谈PHP】第十八弹---NoSQL数据库Redis之莫问剑(String类型)的修炼
- 项目心得
- 你的代码值多少钱 ?
- ubantu键盘快捷键
- C语言数据结构----栈与递归
- 手把手教你打印出PDF(fpdf的简单应用)
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
杨瑞代图片
with杨瑞代什么意思
盖世王胥杨瑞
杨疑的图片
杨疑图片
杨疑的英文名字
杨登魁
杨白冰
杨白冰子女
杨白劳
杨白劳与黄世仁
杨白劳是比喻什么意思
杨百万炒股方法
杨百万书
杨百万谈股说经
杨百万怎么样
杨百万身价
杨百万谈股
杨百万决策系统
杨百万的书
炒股杨百万
杨百万炒股经验
股市杨百万
杨百万 股票
股市 杨百万
杨百万儿子
杨百万指标公式
杨百万选股公式
杨百万大智慧
杨百万 书籍
杨百万股票博客
杨百万简历
杨百万股票池
杨百万炒股心得
杨百万证券
博客杨百万
杨百万软件俱乐部
杨百万2012
杨百万现状
杨百万分析师的博客
杨百万证券决策系统