我一直在用红宝石来掌握红宝石的工作原理。我知道使用这个工具我可以这样做:
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。谢谢你的帮助。
发布于 2014-03-09 22:59:09
您正在逐一设置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命令逐个设置哈希字段成员,但是效率较低,因为每个字段都需要一个请求:
import redis
redisdb = redis.Redis(host="localhost",db=1)
redisdb.hset('post:1', 'title', 'Redis is cool!')
redisdb.hset('post:1', 'author', 'haye321'})发布于 2016-08-30 06:08:18
另一种方法是:您可以使用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
hashhttps://stackoverflow.com/questions/22289227
复制相似问题