设为首页 收藏本站
查看: 690|回复: 0

[经验分享] python使用redis 神器 ---redisco(一)

[复制链接]

尚未签到

发表于 2016-12-19 10:54:20 | 显示全部楼层 |阅读模式
    很久没认真推荐过东西了,实在是人懒也没以前那么有心思去研究新东西,其实本文要推荐的玩意儿也不是自己发现的,是一为技术宅同事瞎逛github后发现推荐给我的。
   
    好了废话不多说,直接进正题。今天我要推荐的是一款python的redis工具。看到这里肯定很多人就要喷了,redis官方本来就有python的第三方库(redis)了为什么还要你来推荐。行,别急,听我先解释redisco的不同点。
  

  redisco:
  1)纯pyhton开发而成,你可以直接看它的源码(github地址:https://github.com/iamteem/redisco).
  2) 带有redis的所有功能,因为它是基于redis这个官方的库上开发而成的.
  3) 可以以django自带orm的方式将数据存入redis,并且提供了大多数和django的orm相同的查询功能.
  

  

  其实我主要就是要介绍上面的第三点,redisco的model(django里也叫着名字)类,它提供的这种能让数据以类似python内部的dict或者class的形式存储到redis里,这样我们对redis的使用就接近nosql数据库了(因为redis自带持久化存储的功能)。
  

  手把手教程范例教程开始:
  

  创建一个你要存进redis的模型,你可以理解为是mysql里的表,需要继承models.Model类
  


from redisco import models
class Person(models.Model):
name = models.Attribute(required=True)
created_at = models.DateTimeField(auto_now_add=True)
fave_colors = models.ListField(str)
   类里面支持的所有数据类型如下:


Model Attributes


Attribute
Stores unicode strings. If used for large bodies of text, turn indexing of this field off by setting indexed=True.
IntegerField
Stores an int. Ints are stringified using unicode() before saving to Redis.
Counter
An IntegerField that can only be accessed via Model.incr and Model.decr.
DateTimeField
Can store a DateTime object. Saved in the Redis store as a float.
DateField
Can store a Date object. Saved in Redis as a float.
FloatField
Can store floats.
BooleanField
Can store bools. Saved in Redis as 1's and 0's.
ReferenceField
可以引用其他的model.Model类,比如可以在一个通讯录类里增加一个字段它的类型是人物这个类他们都继承model.Model类但可以互相引用这样你就可以直接通过 通讯录.人物这样的方式调用(之后的文章会详细介绍)
ListField
列表类型,使用跟python的list一样可以将 python里的unicode, int, float和其他redisco.model类放进去
生成一个Person类的数据
>>person = Person(name="hupu")
     因为name是必填字段所以必须要给
  

    然后 调用save方法就存储到redis里去了。
  


>>person.save()
True
  返回True就是成功了。
  

  

  查询刚刚存进去的数据,跟django的orm真的很像
  >>conchita = Person.objects.filter(name='hupu')[0]
  

  查询所有的Person
  >> all_person = Person.objects.all()
  

  查询age大于某5岁
  

  >> all_person = Person.objects.zfilter(age__gt=5)            小于 就是 字段名__lt 范围 就是 字段名__in=(0,5)
  

  查询范围的都是一个list别忘了[0] 来获得一个结果
  

  最后提一点,redisco.model.Model类存储数据时,对于除了Counter类型以外的所有类型字段有更改比如 person.age = 5 将年龄改为5 都要调用person.save()方法才能更改成功。
  更多的功能可以看它的测试代码里的例子https://github.com/iamteem/redisco/blob/master/tests/models.py 和 https://github.com/iamteem/redisco  首页的文档。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316360-1-1.html 上篇帖子: redis Java操作 下篇帖子: spring-data-redis 的序列化问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表