我一直在使用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。谢谢你的帮助。
答案 0 :(得分:1)
您正在逐个设置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'})
答案 1 :(得分:1)
另一种方式:您可以使用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