美文网首页
一个redis ORM

一个redis ORM

作者: ThomasYoungK | 来源:发表于2019-06-09 11:37 被阅读0次

最近学习redis, 做个redis的ORM练练手:
只要我定义一个类,它的实例就可以直接操作redis:

class Article(PropsMixin):
    content = PropsItem('content', '')  # 字段名字, 默认值
    def __init__(self. id):
        self.id = id

假设现在操作id为10001的Article,可以这样:

article = Article(10001)
article.content  # 返回默认的空,因为还没有设置正文
article.content = '这是正文'  # 在数据库里面存了id为10001的Article的文本
article = Article(10001)
article.content  # 会返回Redis数据库存的正文内容
del article.content  # 删除对应数据库中id为10001的Article的文本
article.content  # 返回空

实现如下

import redis

redis_db = redis.StrictRedis(decode_responses=True)

class PropsMixin:
    @property
    def _props_db_key(self):
        return self.__class__.__name__ + ':' + str(self.id)

    def get_prop_item(self, name):
        return redis_db.hget(self._props_db_key, name)

    def set_prop_item(self, name, value):
        redis_db.hset(self._props_db_key, name, value)

    def del_prop_item(self, name):
        redis_db.hdel(self._props_db_key, name)


class PropsItem:

    def __init__(self, name, default=None):
        self.name = name
        self.default = default

    def __get__(self, instance, owner):
        r = instance.get_prop_item(self.name)
        if r is None:
            instance.set_prop_item(self.name, self.default or '')
            return self.default
        return r

    def __set__(self, instance, value):
        instance.set_prop_item(self.name, value)

    def __delete__(self, instance):
        instance.del_prop_item(self.name)
        self.default = None

上述代码非常容易理解

相关文章

  • 一个redis ORM

    最近学习redis, 做个redis的ORM练练手:只要我定义一个类,它的实例就可以直接操作redis: 假设现在...

  • SpringBoot2快速入门07--redis

    boot2不仅支持ORM框架,而且还支持redis,我们经常使用redis作缓存,之前java使用jedis连接r...

  • Redis在Rails中的使用

    这里介绍两种rails结合redis的方案: 使用redis_orm直接操作数据模型 不使用数据模型,直接操作re...

  • Springboot2.0 + jpa + redis缓存

    本文基于Springboot2.0,使用mysql数据库,通过jpa实现orm,再用redis实现数据库的缓存。目...

  • Beego Models 之 一

    模型(Models)- beego ORM 原文 beego ORM 是一个强大的 Go 语言 ORM 框架。她的...

  • Pony ORM - 有着优美的查询语法的Python ORM

    Pony ORM - 有着优美的查询语法的Python ORM Pony是一个先进的Python ORM,支持使用...

  • Java自学-JDBC ORM

    使用JDBC做一个ORM例子 ORM=Object Relationship Database Mapping 对...

  • Waterline.js

    waterline 是一个让js支持ORM的框架 1.什么是ORM? ORM简介对象关系映射(Object Rel...

  • 自动化生成代码的秘密

    我做过两个自动化生成代码的项目,scaffold和redis-orm。scaffold 主要是通过数据库表定义来生...

  • 自动化生成代码的秘密

    我做过两个自动化生成代码的项目,scaffold和redis-orm。scaffold 主要是通过数据库表定义来生...

网友评论

      本文标题:一个redis ORM

      本文链接:https://www.haomeiwen.com/subject/vxigxctx.html