Redis 是一个基于内存的高效的键值型非关系型数据库,存取效率极高,而且支持多种存储数据结构,使用也非常简单,在本节我们介绍一下 Python 的 Redis 操作,主要介绍 RedisPy 这个库的用法。
1. 准备工作
在本节开始之前请确保已经安装好了 Redis 及 RedisPy库,如果要做数据导入导出操作的话还需要安装 RedisDump,如没有安装可以参考第一章的安装说明。
2. Redis、StrictRedis
RedisPy 库提供两个类 Redis 和 StrictRedis 用于实现Redis 的命令操作。
StrictRedis 实现了绝大部分官方的命令,参数也一一对应,比如 set() 方法就对应 Redis 命令的 set 方法。而Redis 是 StrictRedis 的子类,它的主要功能是用于向后兼容旧版本库里的几个方法,为了做兼容,将方法做了改写,比如 lrem() 方法就将 value 和 num 参数的位置互换,和Redis 命令行的命令参数不一致。
官方推荐使用 StrictRedis,所以本节我们也用 StrictRedis类的相关方法作演示。
3. 连接Redis
当前在本地我已经安装了 Redis 并运行在 6379 端口,密码设置为 foobared。
那么可以用如下示例连接 Redis 并测试:
from redis import StrictRedis
redis = StrictRedis(host='localhost', port=6379, db=0, password='foobared')
redis.set('name', 'Bob')
print(redis.get('name'))
在这里我们传入了 Redis 的地址,运行端口,使用的数据库,密码信息。在默认不传的情况下,这四个参数分别为 localhost、6379、0、None。现在我们声明了一个StrictRedis 对象,然后接下来调用了 set() 方法,设置一个键值对,然后在将其获取打印。
运行结果:
b'Bob'
这样就说明我们连接成功,并可以执行 set()、get() 操作了。
当然我们还可以使用 ConnectionPool 来连接,示例如下:
from redis import StrictRedis, ConnectionPool
pool = ConnectionPool(host='localhost', port=6379, db=0, password='foobared')
redis = StrictRedis(connection_pool=pool)
这样的连接效果是一样的,观察源码可以发现 StrictRedis内其实就是用 host、port 等参数又构造了一个 ConnectionPool,所以我们直接将 ConnectionPool 当参数传给 StrictRedis 也是一样的。
另外 ConnectionPool 还支持通过 URL 来构建,URL 的格式支持如下三种:
redis://[:password]@host:port/db
rediss://[:password]@host:port/db
unix://[:password]@/path/to/socket.sock?db=db
这三种 URL 分别表示创建 Redis TCP 连接、Redis TCP+SSL 连接、Redis Unix Socket 连接,我们只需要构造上面任意一种连接 URL 即可,其中 password 部分如果有则可以写,没有可以省略,下面我们再用URL连接演示一下:
url = 'redis://:foobared@localhost:6379/0'
pool = ConnectionPool.from_url(url)
redis = StrictRedis(connection_pool=pool)
在这里我们使用了第一种连接字符串进行连接,我们首先声明了一个 Redis 连接字符串,然后调用 from_url() 方法创建一个 ConnectionPool,然后将其传给 StrictRedis 即可完成连接,所以使用 URL 的连接方式还是比较方便的。
Key 操作 就不介绍了
有兴趣可以参考中文官方文档:http://redis.majunwei.com/ducumtenation.html
网友评论