海量数据存取的性能、分布式、 扩展性支持上, 并不需要传统关系数据库的一些特征,例如:
Schema、事务、完整SQL查询支持等等,因此在分布式环境下的性能相对与传统的关系数据库有较大的提升。
而我们的Redis就是Nosql这个大家族中的一份子,它是一个开源的使用ANSI C语言编写、支持网络、可基于内存也可
持久化的日志型、Key-Value数据库(注意,Redis同MongoDB,同样是Key-Value数据库),并提供多种语言的API。
我们来看一下Redis官方(http://www.redis.io)的介绍:
Redis is an open source,advancedkey-value store.
Redis是一个开源的,高级的键值式存储数据库。
It is often referred to as adata structure serversince keys can containstrings,hashes,lists,setsandsorted sets.
它通常被称为一个数据结构服务器可以包含字符串,哈希表,链表,集合和有序集合。
In order to achieve its outstanding performance,Redis works with anin-memorydataset.
为了实现其出色的表现,Redis是工作在内存中的数据集。
Depending on your use case,you can persist it either by dumping the dataset todiskevery once in a while,or by appending each command to a log.
您还可以根据您的具体的使用情况,每隔一段时间或执行命令时将数据集写入到磁盘,并且添加到日志中。
Redis also supports trivial-to-setup master-slave replication,withvery fast non-blockingfirst synchronization,auto-reconnection on net split and so forth.
Redis还支持主从复制,并且配置起来很简单,第一次同步就可以无阻塞的达到极快的速度,在网络断开的时候可以自动重连等等。
Other features include a simple check-and-set mechanism,pub/suband configuration settings to make Redis behavelike a cache.
另外它的简单的检查与设置机制,发布(Publish)与订阅(Subscribe)和配置设置的特性使它看起来像是一个缓存。
另外我们的Redis数据库同样支持事务处理,这是MongoDB所不能及的,稍后的文章会给大家详细
介绍Redis的7种数据类型及使用方法,
那我们哪些地方可以使用到Redis数据库呢?
下面我们来看下Redis的适用场景:
1、取最新N 个数据的操作
比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000 条评论的ID 放在Redis 的List 集合中,
并将超出集合部分从数据库获取。
2、排行榜应用,取TOP N 操作
这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,
这时候就需要我们的sorted set 出马了,将你要排序的值设置成sortedset 的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下
复制代码