回馈系列4-Nosql之Redis+PHP[更新完毕]

2012 年 9 月 7 日8250

概念,摘自百度百科:
  redis是一个key-value存储系统。和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

观点:
任何复杂的系统都可以拆分成简单的系统。

安装&执行(个人使用ubuntu环境):

ubuntu 系统下最后一步需要管理员权限,并且可用可不用,不用的话,redis的执行程序都在你的安装目录下,服务端为redis-server,客户端为 redis-cli,若执行了最后一步,这两个文件会被复制到/usr/local/bin/目录下,该目录只有管理员才有写权限,所以需要加sudo获得管理员权限。

这三歩主要是添加redis的配置文件和相关数据的文件夹,etc将会被用来存配置文件,db存redis的数据库,因为都在/usr/local目录下,所以以后启动redis服务的时候都要加sudo,否则无法写入数据到该文件夹中去,这个文件夹的位置不固定,可放其他你喜欢的地方。

下面编辑redis的配置文件,默认也是在redis的安装程序所在目录,名字是redis.conf,一般使用要改的地方不多,我就不详细说明了,有兴趣的可以去网上搜redis的配置文件中文详解,没多大难度。

其他的我就不多说了,改这么几小下就够用了,更详细的配置有兴趣的动手去配,去测试,去用
启动redis,执行:

下面安装redis的PHP客户端,官网推荐phpredis,这是一个以php扩展方式写的redis的PHP端。
推荐用git clone获得,没有git就安装一个(sudo apt-get install git),git不知道是啥就去百度一下。

    $ git clone https://github.com/nicolasff/phpredis.git

执行这个命令获取phpredis的复制。

呃。。三国杀去了。。下次再说

————————————————凉爽的第二天

接着上次的来,一般你在什么目录下使用git clone命令,phpredis就会被下载到什么目录,这是一个redis的PHP客户端,以PHP扩展的形式安装。
现在回顾一下如何安装PHP扩展,三歩:
1.在扩展程序的目录内找到phpize&执行它
2.执行配置命令./configure
3.make & make install
正常的话会返回一些信息,无非是该扩展被放在哪个目录之类的,正常就是php扩展目录。
随便弄个页面执行phpinfo()查看一下phpredis是否安装成功了(phpinfo这个页面最好常备着)。

扩展完了就可以使用了,随便弄个页面,new一个Redis,下面就开始玩了。

Redis有多种数据结构,我比较常用的有string,hash,list,set,sorted set,还有pub/sub、transactions之类的我不常用,简单介绍一下,就不多说了,有兴趣可以自己做。

    这是传说中的事务处理,mysql里应该都接触过,有兴趣自己弄。

    一些例子:

    string结构

于是有:

hash结构:
hash结构就像我上面解释的,类似于关联数组。

list结构:
list列表结构就是一个有序数组,只能从头或从尾加元素,也只能从头或从尾取元素。

还有一些其他的用法,如lpushx、blpush,返回列表的lrange等等,这些建议去看phpredis官网,PHPredis 。

set结构:

基本特性就是如此,他是排他性的,当然,如果你加个boyfriend就没问题了。
zset结构:
自带数字的set结构,比如你把时间戳赋予每个信息id会如何?任何信息的id被修改、添加、删除,只要修改zset集合中对应id的时间戳,然后按时间戳排序,你就知道每个信息最后被操作的时间了。同样浪微博中,海量数据的排序也大量用到了zset。

下面简单看看zset的常用用法:

好吧,上面是kaige和各个girlfriend见面的优先级,7最高,1最小,说明kaige最喜欢4号girlfriend,kaige终于幸福了。

到这,基本的数据类型的简单用法都介绍完了,有兴趣的去list下面的传送门自己玩玩,眼过千遍不如手过一遍,画家再怎么能说看的画再多自己不会画也是白搭,程序员什么都懂,实际操作什么都不会也一样是白扯,说穿了,还是要手底下见真章的。这篇文章估计不会有太大修改了,再有内容会在新一篇中发出。

原文地址:http://bbs.lampbrother.net/read-htm-tid-119818.html

0 0