月归档:2012 年七月

CodeIgniter相关配置分析

core/controller 49行 $this->load->initlialize() 包含autoload设置的 加载类 1.active_group 导入database.php 配置文件 active_group =’default’ 如果使用load->database(‘xx’) 指定了key active_group 就为key session类 87行 连接默认数据库  $this->CI->load->database(); active_group default 就会连接default指定的数据库 如果配置文件把active_group 改成ask_ext 则会连接ask_ext 错误。  2.active_record active_record=false CI_DB_driver::insert_string() active_record=true CI_DB_active_record::insert()  也有父类的CI_DB_driver::insert_string() 都调用CI_DB_mysql_driver::_insert()获取最终的sql DB.php 120行  定义类CI_DB 继承CI_DB_active_record 或 CI_DB_driver,CI_DB_active_record 本身继承了CI_DB_driver,mysql_driver.php (CI_DB_mysql_driver)继承 … 继续阅读

发表在 Php | 标签为 , , , | 留下评论

Redis应用场景

1.在主页中显示最新的项目列表。 Redis使用的是常驻内存的缓存,速度非常快。LPUSH用来插入一个内容ID,作为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为5000。如果用户需要的检索的数据量超越这个缓存容量,这时才需要把请求发送到数据库。 list: lpush + ltrim  //$r->lTrim($key,0,4999); 2.删除和过滤。 如果一篇文章被删除,可以使用LREM从缓存中彻底清除掉。 list: $r->lRem($key,’find_id’,-2);/从右边删除2个value为find_id的元素 3.排行榜及相关问题。 排行榜(leader board)按照得分进行排序。ZADD命令可以直接实现这个功能,而ZREVRANGE命令可以用来按照得分来获取前100名的用户,ZRANK可以用来获取用户排名,非常直接而且操作容易。 zset: zadd z1 100 aaa   zrevrange z1 0 -1 withscores 分数从大到小 zrank z1 aaa  分数从小到大 返回aaa的排名 zincrby z1 5 111 给值为111的元素的score 加5 4.按照用户投票和时间排序。 这就像Reddit的排行榜,得分会随着时间变化。LPUSH和LTRIM命令结合运用,把文章添加到一个列表中。一项后台任务用来获取列表,并重新计算列表的排序,ZADD命令用来按照新的顺序填充生成列表。列表可以实现非常快速的检索,即使是负载很重的站点。 list: lpush … 继续阅读

发表在 Nosql | 标签为 , | 留下评论

Redis学习

从网上下了个redis命令参数中文版。照着敲了一遍命令。让后找php的api敲了一遍。 1.string setbit 对key所储存的字符串值,设置或清除指定偏移量上的位(bit)。 setnx setex 2.hash HSET key field value 将哈希表key中的域field的值设为value。 hgetall 结果列表为: key1 val1 key2 val2 ……. hkeys hvals 3.list lpush xx yy 向队列key值 插入值yy lpushx 需要队列存在才能插入成功 lpop blpop rpoplpush brpoplpush ltrim lrange $r->lRem($key,’find’,-2); //从右边删除2个value为find的元素 linsert hot after … 继续阅读

发表在 Nosql | 标签为 , , | 留下评论