跳转到主要内容

Python风格的Redis客户端。

项目描述

Redisworks 0.4.0

Python Versions License Build Status Coverage Status

Python风格的Redis客户端

为什么选择Redisworks?

  • 懒加载Redis查询

  • 动态类型

  • 易于使用

你是否曾经使用过PyRedis,并想知道为什么你总是需要考虑类型?你不得不不断地将对象转换为字符串然后再转换回来,因为Redis将大多数内容都作为字符串保存?

Redisworks为Redis提供了一个Python风格的接口。让Redisworks为你处理类型转换。

幕后,Redisworks使用DotObject来提供漂亮的点表示法对象和懒加载Redis查询。

安装

pip install redisworks

注意RedisWorks需要Redis服务器2.4+。

设置

假设你想要Redis中的所有键都以单词root开头。那么你

root = Root()  # connects to Redis on local host by default

或者如果你想要更具体的话

root = Root(host='localhost', port=6379, db=0)

密码

任何你传递给Root的其他参数都将传递给PyRedis。例如

root = Root(host='localhost', port=6379, db=0, password='mypass')

保存到Redis

将对象保存到Redis就像将对象赋值给root的属性或root属性的属性一样简单(你可以深入到任何深度)。确保你不在键名中使用Python的保留字。

示例

>>> from redisworks import Root
>>> import datetime
>>> root = Root()
>>> root.my.list = [1, 3, 4]
>>> root.my.other.list = [1, [2, 2]]
>>>
>>> some_date = datetime.datetime(2016, 8, 22, 10, 3, 19)
>>> root.time = some_date
>>>
>>> root.the.mapping.example = {1:1, "a": {"b": 10}}

Redisworks将自动将你的对象转换为适当的Redis类型,并在你分配元素时立即将其写入Redis!

以上各项的键将类似于您输入的内容:root.my.listroot.timeroot.the.mapping.example

如果您使用redis-cli,您会注意到数据是以适当的Redis数据类型保存的

127.0.0.1:6379> scan 0
1) "0"
2) 1) "root.the.mapping.example"
   2) "root.time"
   3) "root.my.list"
127.0.0.1:6379> type root.the.mapping.example
hash
127.0.0.1:6379> type root.time
string
127.0.0.1:6379> type root.my.list
list

从Redis读取

读取数据就像它刚刚保存在Python内存中一样简单!

Redis返回惰性查询,就像Django返回惰性查询一样。实际上,惰性对象代码是从Django借用的!

如果您从保存到Redis中的示例运行,请运行一个flush root.flush()来清空Redisworks缓存。这样做是为了让它从Redis获取对象,而不是读取自己的当前数据副本

>>> from redisworks import Root
>>> root = Root()
>>> thetime = root.time
>>> thelist = root.my.list
>>> mydict = root.the.mapping.example
>>> mydict  # is not evalurated yet!
<Lazy object: root.the.mapping.example>
>>> print(mydict)
{1:1, "a": {"b": 10}}  # Now all the 3 objects are read from Redis!
>>> mydict
{1:1, "a": {"b": 10}}
>>> root.my.list
[1, 3, 4]
>>> root.my.other.list
[1, [2, 2]]
>>> root.time
2016-08-22 10:03:19

更改root键名

默认情况下,每个键名都以单词root开头。如果您想使用另一个名称,您有两个选项

选项1:传递命名空间

>>> mynamespace = Root(conn=redis_conn, namespace='mynamespace')
>>> mynamespace.foo = 'bar'

选项2:简单地继承Root

>>> from redisworks import Root
>>> class Post(Root):
...     pass
>>> post=Post()
>>> post.item1 = "something"  # saves to Redis
...
>>> print(post.item1)  # loads from Redis
something

数字作为属性名

假设您想要root.1作为键名。Python不允许属性名以数字开头。

您只需要将数字以字符i开头,Redisworks就会为您处理

>>> root.i1 = 10
>>> print(root.i1)
10

Redis中的实际键将是root.1

动态键名

>>> path1 = 'blah'
>>> path2 = 'blah.here`'

>>> root[path1] = 'foo'
>>> root[path2] = 'foo bar'

>>> root.blah
foo
>>> root.blah.here
foo bar

向键传递TTL

您可以使用with_ttl辅助函数。

>>> from redisworks import Root, with_ttl
>>> self.root.myset = with_ttl([1, 2, 3], ttl=1)
>>> self.root.flush()
>>> self.root.myset
[1, 2, 3]
>>> time.sleep(1.2)
>>> self.root.flush()
>>> self.root.myset

其他示例

请参阅example.py

主要作者

Seperman(Sep Dehpour)

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

redisworks-0.4.0.tar.gz (8.1 KB 查看哈希值

上传时间:

构建分布

redisworks-0.4.0-py3-none-any.whl (8.0 KB 查看哈希值

上传时间: Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面