首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有redis-py的复杂对象

具有redis-py的复杂对象
EN

Stack Overflow用户
提问于 2014-03-09 22:44:17
回答 2查看 1K关注 0票数 1

我一直在用红宝石来掌握红宝石的工作原理。我知道使用这个工具我可以这样做:

代码语言:javascript
复制
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。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-09 22:59:09

您正在逐一设置Redis散列的各个字段(散列是Redis中存储对象的常用数据结构)。

更好的方法是使用Redis HMSET命令,它允许在一个操作中设置给定哈希的多个字段。使用Redis-py看起来如下所示:

代码语言:javascript
复制
import redis
redisdb = redis.Redis(host="localhost",db=1)
redisdb.hmset('post:1', {'title':'Redis is cool!', 'author':'haye321'})

更新:

当然,您可以使用HSET命令逐个设置哈希字段成员,但是效率较低,因为每个字段都需要一个请求:

代码语言:javascript
复制
import redis
redisdb = redis.Redis(host="localhost",db=1)
redisdb.hset('post:1', 'title', 'Redis is cool!')
redisdb.hset('post:1', 'author', 'haye321'})
票数 1
EN

Stack Overflow用户

发布于 2016-08-30 06:08:18

另一种方法是:您可以使用RedisWorks库。

pip install redisworks

代码语言:javascript
复制
>>> 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作为密钥名:

代码语言:javascript
复制
>>> class Post(Root):
...     pass
... 
>>> post=Post()
>>> post.i1 = {'title':'Redis is cool!', 'author':'haye321'}
>>> print(post.i1)
{'author': 'haye321', 'title': 'Redis is cool!'}
>>> 

如果你查一下Redis

代码语言:javascript
复制
$ redis-cli
127.0.0.1:6379> type post.1
hash
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22289227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档