コード例 #1
0
    def hkeys(self, key):
        result = []
        if self._db.get(KEY_CODEC.encode_hash(key)) is not None:
            for db_key, _ in self._get_db_iterator(
                    KEY_CODEC.get_min_hash_field(key)):
                _, length, field_key = KEY_CODEC.decode_key(db_key)
                field = field_key[length:]
                result.append(field)

        return result
コード例 #2
0
ファイル: keyspace.py プロジェクト: Yipit/dredis
 def smembers(self, key):
     result = set()
     key_id, length = self._get_set_key_id_and_length(key)
     if length > 0:
         for db_key, _ in self._get_db_iterator(
                 KEY_CODEC.get_min_set_member(key_id)):
             _, length, member_key = KEY_CODEC.decode_key(db_key)
             member_value = member_key[length:]
             result.add(member_value)
     return result
コード例 #3
0
ファイル: keyspace.py プロジェクト: Yipit/dredis
 def hgetall(self, key):
     result = []
     key_id, hash_length = self._get_hash_key_id_and_length(key)
     if hash_length > 0:
         for db_key, db_value in self._get_db_iterator(
                 KEY_CODEC.get_min_hash_field(key_id)):
             _, length, field_key = KEY_CODEC.decode_key(db_key)
             field = field_key[length:]
             result.append(field)
             result.append(db_value)
     return result
コード例 #4
0
ファイル: gc.py プロジェクト: Yipit/dredis
 def _collect(self, db):
     deleted = 0
     with db.write_batch() as batch:
         for deleted_db_key, _ in db.iterator(
                 prefix=KEY_CODEC.MIN_DELETED_VALUE):
             _, _, deleted_key_value = KEY_CODEC.decode_key(deleted_db_key)
             for db_key, _ in db.iterator(prefix=deleted_key_value):
                 deleted += 1
                 batch.delete(db_key)
                 if deleted == self._batch_size:
                     return
             batch.delete(deleted_db_key)
コード例 #5
0
def _convert_key(batch, db_key, db_value):
    type_id, _, key = KEY_CODEC.decode_key(db_key)
    if len(db_value) < UUID_LENGTH_IN_BYTES:
        # older schema before uuid
        key_id = key
        length = db_value
    else:
        # new schema with uuid
        key_id = db_value[:UUID_LENGTH_IN_BYTES]
        length = db_value[UUID_LENGTH_IN_BYTES:]
    print('batch.put({!r}, {!r})'.format(KEY_CODEC.get_key(key_id, type_id),
                                         length))
    batch.put(KEY_CODEC.get_key(key_id, type_id), length)
    if key != key_id:
        batch.delete(db_key)
        print('batch.delete({!r})'.format(db_key))
        print('[TO RUN] RENAME {} {}'.format(_rediscli_str(key_id),
                                             _rediscli_str(key)))
コード例 #6
0
 def get_key_value_pair(db_key, db_value):
     _, length, field_key = KEY_CODEC.decode_key(db_key)
     field = field_key[length:]
     return field, db_value