【ecstore深思录】细谈其引入的KV机制(key-value)
来源:互联网 发布:惯性导航算法 四元 编辑:程序博客网 时间:2024/05/20 10:23
一、kv是个什么鬼:
kv存储机制(key-value-store)是商派研发的ecos框架解决大数据存储的一种优化方式。对memcached、systemfile/flare等进行封装把不常变动的一些数据存储在kvstore中。 举个例子:原来你想存一个字段入库,但是为了一个字段建一张表再插入、取出数据 是不是太麻烦,太铺张浪费了。有了KV, 我直接存字段到框架自身建好的表或者缓存中, 需要的时候直接凭借key拿出value就好,是不是方便多了,这就是它的奇妙之处。
二、在商派的ecstore中改如何配置
kvstroe默认的存储是filesystem,如果要改成为memcache 或者memcached 则在config.php 文件中有要开启下面的配置(单个memcache服务)
# kvstore后台存储类# define('KVSTORE_STORAGE', 'base_kvstore_filesystem');# define('KVSTORE_STORAGE', 'base_kvstore_mysql');define('KVSTORE_STORAGE', 'base_kvstore_memcache');# define('KVSTORE_STORAGE', 'base_kvstore_dba');# define('KVSTORE_STORAGE', 'base_kvstore_tokyotyrant');# kvstore memcache服务器配置# socket 'unix:///tmp/memcached.sock'# server '127.0.0.1:11211'# multi 'unix:///tmp/memcached.sock,127.0.0.1:11211,127.0.0.1:11212'define('KVSTORE_MEMCACHE_CONFIG', '127.0.0.1:11211');
# 多台kvstore memcache 的服务器配置只需要在ip后加“,”号
define('KVSTORE_MEMCACHE_CONFIG', 'unix:///tmp/memcached.sock,127.0.0.1:11211,127.0.0.1:11212');
三、KVstore的使用流程:
1、先选择数据存储方式:非持久存储和持久存储 2、调用过程:数据先从kv中取,没有从mysql中取,取出来放进kv中
四、kvstore封装好常用的接口:
static function config_prsistent($flag):设置是否持久化static function instance($prefix) 实例化kvstorepublic function increment($key,$offset=1):自增public function decrement($key,$offset=1):自减public function fetch($key,$value,$offset,$timeout_version=null):返回bool值和$_fetch_accoun调用次数,获取key值得内容public function store($key,$value,$ttl=1):设置key对应的value,和返回次数public function delete($key,$ttl=1):删除key对应的value,这里不是物理删除,只改变ttl对应的值来虚拟删除public function persitent($key,$value,$ttl=1):将数据永久的存在sdb_base_kvstore中,持久化存储public function recoverry($record):回复对应的valuestatic public function delete_expire_data():根据过期时间再次对kvstore表进行删除
注意:只有memcached支持inccrement和deincrement;mysql不支持方法recovery
五、实际应用场景演示:
一直认为,没有实际应用的理论都是扯淡,纸上谈兵谁不会,那小编在此给大家展示下实际应用的demodemo1、文章浏览次数(热度)的统计:(ecstore中可以采用两种方式存和取kv值)
方式一、利用ecstore框架自身封装好的setConf(存值)和getconf(取值)函数
##首先根据文章id取文章取浏览次数,有则加1存入;无则存入首次访问 $view_count=app::get('b2c')->getConf('view_count_').$_POST['acticle_id']; if($view_count){ app::get('b2c')->setConf('view_count_'.$_POST['article_id'],$view_count+1); }else{ app::get('b2c)->setConf('view_count_'.$_POST['article_id'],1); }
`方式二、利用ecstore框架底层的的store(存值)和fetch(取值)函数
$key='view_count_'.$_POST['article_id']; $view_count=base_kvstore::instance('b2c')->fetch($key,$content); if($view_count){ base_kvstore::instance('b2c')->store($key,int($content)+1); }else{ base_kvstore::instance('b2c')->store($key,1); }
参考资料: 《shopex:key-value》转载请标明出处: http://blog.csdn.net/a5485899/article/details/54092535 本文出自:【蔡梦龙的博客】(http://blog.csdn.net/a5485899/)
1 0
- 【ecstore深思录】细谈其引入的KV机制(key-value)
- Jquery之data([key],[value])【div存储数据,普通的和kv对】(十一)
- java 通过map的value返回其对应的key (遍历map)
- Key-Value Observing机制(KVO)
- Key-Value Observing机制
- Key-Value Observing机制
- Key-Value Observing机制
- Key-Value Observing机制
- Key-Value Observing机制
- Key-Value Observing机制
- Key-Value Observing机制
- KVC(Key-value coding)机制
- Key-Value Observing机制 学习
- CMU440-P0:Implementing a Key-Value database server(实现一个kv数据库服务器)
- 如何能通过hashmap的value来返回其对应的键值key
- KVO(key value observing)的使用
- KVO (key-value observing)的使用
- STL的hash和map本身以及其key、value是存在stack还是heap?
- vue2.0新手发车(一):使用webpack构建项目
- Oracle 表空间扩展和数据迁移
- ubuntu 打开不了gnome-terminal 显示错误提示exited status 8
- 自定义DrawerLayout 滑动范围
- java中使用xPath读取xml中的数据
- 【ecstore深思录】细谈其引入的KV机制(key-value)
- Apache+nginx 开启路由重写
- Azure Python SDK安装及排错
- 7.12 编程练习题1
- 进入界面显示Dialog或者PopupWindow闪退的处理
- 独家报道丨黑客窃取MongoDB的数据,勒索受害者
- 说说Android应用的persistent属性
- 微信分享集成示例
- 使用Nexus搭建Maven私服