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