簡體   English   中英

帶redis-py的復雜對象

[英]Complex objects with redis-py

我一直在使用redis-cli來了解redis的工作原理。 我了解使用此工具可以做到這一點:

127.0.0.1:6379> set post:1:title "Redis is cool!"
OK
127.0.0.1:6379> set post:1:author "haye321"
OK
127.0.0.1:6379> get post:1:title
"Redis is cool!"

我似乎無法弄清楚如何使用redis-py完成此操作。 似乎所提供的set命令不允許使用對象類型或id。 謝謝你的幫助。

您正在一個接一個地設置Redis哈希的各個字段(哈希是Redis中用於存儲對象的常見數據結構)。

更好的方法是使用Redis HMSET命令,該命令允許在一個操作中設置給定哈希的多個字段。 使用Redis-py,它將如下所示:

import redis
redisdb = redis.Redis(host="localhost",db=1)
redisdb.hmset('post:1', {'title':'Redis is cool!', 'author':'haye321'})

更新:

當然,您可以使用HSET命令一個一個地設置Hash字段成員,但是效率較低,因為每個字段需要一個請求:

import redis
redisdb = redis.Redis(host="localhost",db=1)
redisdb.hset('post:1', 'title', 'Redis is cool!')
redisdb.hset('post:1', 'author', 'haye321'})

另一種方式:您可以使用RedisWorks庫。

pip install redisworks

>>> from redisworks import Root
>>> root = Root()
>>> root.item1 = {'title':'Redis is cool!', 'author':'haye321'}
>>> print(root.item1)  # reads it from Redis
{'title':'Redis is cool!', 'author':'haye321'}

如果您確實需要在Redis中使用post.1作為鍵名:

>>> class Post(Root):
...     pass
... 
>>> post=Post()
>>> post.i1 = {'title':'Redis is cool!', 'author':'haye321'}
>>> print(post.i1)
{'author': 'haye321', 'title': 'Redis is cool!'}
>>> 

如果您檢查Redis

$ redis-cli
127.0.0.1:6379> type post.1
hash

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM