todo - meetbill/redis-orm GitHub Wiki

CRUD

CRUD(Create,Read,Update,Delete)

  • 查,使用 orm 主要是为了方便查询啦

1 twemproxy 支持

1.1 keys

目前 redis-orm 中使用了 keys 命令,twemproxy 本身不支持

删除 key 时(redis-orm/redisorm/managers.py:_delete_instance_by_id),目前会使用 keys 命令

"KEYS" "redisorm:testxxx:object:i8rdNZyCiWpCir4V:*"
"DEL" "redisorm:testxxx:object:oWHS0dZSDYCNqZq4" "redisorm:testxxx:object:oWHS0dZSDYCNqZq4:tags"

code

    def _delete_instance_by_id(self, instance_id, pipe=None, apply=True, system=None):
        """
        Args:
            instance_id:isinstance
            pipe:pipeline
            apply:
            system: redis
        Returns:
        """
        system = self.get_system(system)
        instance_id = u(instance_id)
        all_key = self._key('__all__')
        expire_key = self._key('__expire__')
        key = self._key('object:{0}', instance_id)
        # unknown command 'keys' for twemproxy
        # todo
        extra_keys = get_redis(system).keys(self._key('object:{0}:*', instance_id))
        if not pipe:
            pipe = get_redis(system).pipeline(transaction=False)
        pipe.srem(all_key, instance_id)
        pipe.zrem(expire_key, instance_id)
        pipe.delete(key, *extra_keys)
        if apply:
            pipe.execute()

当记录没有设置过期时间时,对应的 key 为:

  • "redisorm:testxxx:object:oWHS0dZSDYCNqZq4"【string】
  • "redisorm:testxxx:object:oWHS0dZSDYCNqZq4:tags"【zset】

当记录设置了过期时间时,对应的 key 为:

  • "redisorm:testxxx:object:i8rdNZyCiWpCir4V"【string】
  • "redisorm:testxxx:object:i8rdNZyCiWpCir4V:tags"【zset】
  • "redisorm:testxxx:object:i8rdNZyCiWpCir4V:expire"【string】

1.2 multi

[2020-12-22 23:52:55.568] nc_message.c:494 get msg 0x7fa73f826b00 id 19083805 len 30 error 'unknown command 'multi'' errno -2