好贷网好贷款

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

发布时间:2016-12-3 14:45:03 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"回馈系列4-Nosql之Redis+PHP[更新完毕]",主要涉及到回馈系列4-Nosql之Redis+PHP[更新完毕]方面的内容,对于回馈系列4-Nosql之Redis+PHP[更新完毕]感兴趣的同学可以参考一下。

概念,摘自百度百科:  redis是一个key-value存储系统。和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。观点:  任何复杂的系统都可以拆分成简单的系统。安装&执行(个人使用ubuntu环境): $ wget http://redis.googlecode.com/files/redis-2.4.14.tar.gz $ tar xzf redis-2.4.14.tar.gz $ cd redis-2.4.14 $ make $ sudo make installubuntu 系统下最后一步需要管理员权限,并且可用可不用,不用的话,redis的执行程序都在你的安装目录下,服务端为redis-server,客户端为 redis-cli,若执行了最后一步,这两个文件会被复制到/usr/local/bin/目录下,该目录只有管理员才有写权限,所以需要加sudo获得管理员权限。 $ sudo mkdir /usr/local/redis $ sudo mkdir /usr/local/redis/etc $ sudo mkdir /usr/local/redis/db这三歩主要是添加redis的配置文件和相关数据的文件夹,etc将会被用来存配置文件,db存redis的数据库,因为都在/usr/local目录下,所以以后启动redis服务的时候都要加sudo,否则无法写入数据到该文件夹中去,这个文件夹的位置不固定,可放其他你喜欢的地方。下面编辑redis的配置文件,默认也是在redis的安装程序所在目录,名字是redis.conf,一般使用要改的地方不多,我就不详细说明了,有兴趣的可以去网上搜redis的配置文件中文详解,没多大难度。 daemonize no 改为 daemonize yes #改为yes使得redis以非守护进程的方式执行,否则默认每5秒返回个信息到std窗口,就是默认输出窗口,黑底白字那个。 dbfilename dump.rdb #redis虽说和memcache类似都是内存数据库,但是它有快照和日志两种方式,满足一定条件即将数据写入磁盘中使数据获得持久化 #上面的配置dump.rdb是默认的快照方式 以一定时间和数据为条件 满足即将内存中所有redis数据写入磁盘 dir ./ 改为 dir /usr/local/redis/db # 这个配置项是告诉redis存放持久化数据的文件夹位置 appendonly no # 这个就是日志式存储的方式 按默认no即可其他的我就不多说了,改这么几小下就够用了,更详细的配置有兴趣的动手去配,去测试,去用。启动redis,执行: $ sudo /usr/local/bin/redis-server /usr/local/redis/etc/redis.conf #以管理员的身份按redis.conf的配置启动redis-server $ netstat -ntl # 查看网络环境 若看到6379端口已打开 则表示启动成功了 $ ps -A|grep 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.执行配置命令./configure3.make & make install正常的话会返回一些信息,无非是该扩展被放在哪个目录之类的,正常就是php扩展目录。随便弄个页面执行phpinfo()查看一下phpredis是否安装成功了(phpinfo这个页面最好常备着)。扩展完了就可以使用了,随便弄个页面,new一个Redis,下面就开始玩了。 $redis = new Redis(); [b]//我就new一次了 后面的例子不再new了[/b] $redis->connect('127.0.0.1', 6379); //我个人最常用的方式 传入IP和端口 也可以只传IP 它会使用默认端口 配置文件里配置的那个 //还有使用unix域之类的连接方式 需要结合配置文件 有兴趣的[b]自己去配[/b]Redis有多种数据结构,我比较常用的有string,hash,list,set,sorted set,还有pub/sub、transactions之类的我不常用,简单介绍一下,就不多说了,有兴趣可以自己做。 string结构 最简单的key/value结构,可以当作php数组全给拆开来的德行。 hash结构 基本上就是关联数组,后面我用的时候就会明白了。 list结构 这是个列表结构,可以当作栈可以当做队列,先进先出和先进后出都能实现。 set结构 我的最爱,自动排他的性质简直太帅了,这是个集合,里面不允许有重复元素。 sorted set结构 自动排序的set结构,升级版的set结构,他比set多了一个值,用来排序,你可以把值当作优先级来使用。 pub/sub 这个东东貌似是建立一个类似通道的东西,一个人建立,一个人订阅,然后就可以互相发信息了,你可以尝试做了聊天室。 transactions 这是传说中的事务处理,mysql里应该都接触过,有兴趣自己弄。一些例子:string结构 $redis->set('kaige', 'quenvren'); //set一下kaige这个键的值为quenvren,自己去拼,不解释,如有雷同,纯属巧合。 $redis->get('kaige'); //get一下kaige,拿值。 $redis->delete('kaige'); //返回1 把1个kaige删了 $redis->exists('kaige'); //返回false,kaige不在了于是有: <?php $liwenkai = new Redis(); $liwenkai->connect('127.0.0.1', 6379); //此变量名无任何意义,即使你认为有也与作者无关 $liwenkai->set('wenkai','quenvren'); function ask_wenkai(){ if($liwenkai->get('wenkai') == 'quenvren'){ echo 'oh yes'.'<br/>'; ask_wenkai(); } } ask_wenkai(); $redis->delete('wenkai'); //以上代码未经测试 如有错误 也很正常 纯属随手一打 姑且随手一看 不过redis基本上差不多理论的说应该就是这么用的 ?>hash结构:hash结构就像我上面解释的,类似于关联数组。 $redis->hset('kaige','chulian','wu'); $redis->hset('kaige','dierchun','kong'); $redis->hget('kaige','chulian'); //这里返回wu //他一共用到三个参数,对应的关联数组是$kaige['chulian'] = 'wu'; //事实上在Perl语言中哈希结构就是关联数组list结构:list列表结构就是一个有序数组,只能从头或从尾加元素,也只能从头或从尾取元素。 $redis->lpush('kaige','xu'); $redis->lpush('kaige','yao'); $redis->lpush('kaige','nv'); $redis->lpush('kaige','ren'); lpush是左边压入的意思,有对应的rpush用法,就是右边压入。 $redis->lpop('kaige'); $redis->rpop('kaige'); 猜猜弹出的是什么?还有一些其他的用法,如lpushx、blpush,返回列表的lrange等等,这些建议去看phpredis官网,PHPredis 。set结构: $redis->sadd('kaige','girlfriend'); $redis->sadd('kaige','girlfriend'); $redis->sadd('kaige','girlfriend'); 给kaige加了三个女朋友,结果还是只有一个。 $redis->smembers('kaige'); 返回一个girlfriend $redis->scard('kaige'); 计算kaige的女朋友个数,返回1 $redis->sadd('meinv','1hao'); $redis->sadd('meinv','2hao'); $redis->sadd('meinv','3hao'); 添加了3个妹子到meinv里。 var_dump($redis->sInter('kaige','meinv')); 这是求两个集合的交集,返回空,kaige和meinv没有交集,另外还有求并集之类的,新浪可能是全球使用redis最大的服务商了,哦,还有个seqing网站也全线改用redis做数据库。 就微博来说,如果你想找你关注的人同时关注了谁,用交集吧。基本特性就是如此,他是排他性的,当然,如果你加个boyfriend就没问题了。zset结构:自带数字的set结构,比如你把时间戳赋予每个信息id会如何?任何信息的id被修改、添加、删除,只要修改zset集合中对应id的时间戳,然后按时间戳排序,你就知道每个信息最后被操作的时间了。同样新浪微博中,海量数据的排序也大量用到了zset。下面简单看看zset的常用用法: $redis->zadd('kaige',1,'girlfriend1'); $redis->zadd('kaige',3,'girlfriend2'); $redis->zadd('kaige',5,'girlfriend3'); $redis->zadd('kaige',7,'girlfriend4');好吧,上面是kaige和各个girlfriend见面的优先级,7最高,1最小,说明kaige最喜欢4号girlfriend,kaige终于幸福了。 $redis->zRange('kaige',0,-1); 按第二个参数排序,返回所有的第三个参数 $redis->zRange('kaige',0,-1,true); 按第二个参数排序,返回所有第二和第三个参数 0表示返回起始位置,-1表示长度为全部。 到这,基本的数据类型的简单用法都介绍完了,有兴趣的去list下面的传送门自己玩玩,眼过千遍不如手过一遍,画家再怎么能说看的画再多自己不会画也是白搭,程序员什么都懂,实际操作什么都不会也一样是白扯,说穿了,还是要手底下见真章的。这篇文章估计不会有太大修改了,再有新内容会在新一篇中发出。 原文地址:http://bbs.lampbrother.net/read-htm-tid-119818.html 管理员在2009年8月13日编辑了该文章文章。 --> --> 阅读(70) | 评论(0) | 转发(0) | 0 上一篇:花儿为什么那样的红 下一篇:MYSQL乱码问题。 相关热门文章 IP Sec VPN与NAT破镜重圆 网站导航 GoAgent图文设置教程 UT2.0正式版下载 tomcat6.0配置(含配置视频下载... 大家都是用什么来管理hadoop集... 网站被人挂了吗,添加了些程序... Nginx如何保证不走宕机的那个... 大家谈谈MYSQL客户端和服务器... 以下代码运行后为何会输出5?... 热门推荐 --> 给主人留下些什么吧!~~ 评论热议

上一篇:花儿为什么那样的红
下一篇:在路上

相关文章

相关评论