mysql kvdb_从MYSQL到KVDB

2016年4月10日 星期日 阴,雾霾

惊悉新浪SAE又多收费了,凡是用Mysql的应用,每天至少要交2×24=48颗云豆的租金。新浪为什么经常干这种事呢?用户会不会怀疑哪天又开始另找名目多收云豆?

这跟食堂打菜员给人打菜一样,即使都是同样多的份量,打两次给到位给和打一大堆到了最后又拨出来,这给人的感觉是不一样的。

其他应用的Mysql都关了,就剩下这个blog占的云豆比较多,一天要烧49.53颗云豆,其中Mysql就占了48颗。我的云豆不多,上面还有程序要支撑至少到2017年国庆,所以先忍了。这周断断续续修改程序,把这个博客的数据库由Mysql改为纯KVDB的了。

我不是很喜欢GAE的数据库,也不喜欢Mysql,我个人比较喜欢NOSQL。我觉得NoSQL在很多场合可以适用,性能也一点都不差,使用也很灵活,调用简单。

1. 可以存储string、dict、list、list of dict等多种类型,自己组织编解码就可以了,参考代码如下。

2. python的list支持切片、排序,所以kvdb也可以很容易排序或者选择部分数据。

import sys

reload(sys)

sys.setdefaultencoding('utf-8')#不想中文报错就加上

def encode_dict(my_dict):

newdict = {}

for k in my_dict:

newdict[str(k)] = my_dict[k].encode('utf-8') if isinstance(my_dict[k], unicode) else str(my_dict[k])

return "\x1e".join("%s\x1f%s" % x for x in newdict.iteritems())

def decode_dict(my_string):

return dict(x.split("\x1f") for x in my_string.split("\x1e"))

# 编码list

def encode_list(my_list):

return "\x1e".join(str(x) for x in my_list)

# 解码list

def decode_list(my_string):

return list(my_string.split("\x1e"))

# 编码字典list

def encode_dictlist(my_list):

return "\x1a".join(encode_dict(x) for x in my_list)

# 解码字典list

def decode_dictlist(my_string):

tmplist = []

for item in my_string.split("\x1a"):

tmplist.append(decode_dict(item))

return tmplist

博客代码回头等测试差不多了,我再整理新的程序开源到Github上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值