Redis存储

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 嘉宾介绍 大家好,首先自我介绍一下,我是360 web平台-基础架构组的宋昭,负责大容量类redis存储pika的...
    dd92c2f421e3阅读 73,457评论 5 26
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,793评论 19 139
  • 一.數據結構 开发中还是String & Hash用的比较多, 1.list Redis存储的list接口其实是一...
    西西弗斯XD阅读 4,940评论 0 0
  • 存储 redis使用了两种文件格式:全量数据和增量请求。 全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进...
    梦幻_78af阅读 4,413评论 0 0
  • 性子终究是性子,无论怎样掩饰,怎样改变,怎样去跟自己的心对话,性子还是扎根在骨子里,弗不去,磨不掉,就像人的面孔,...
    愿大力大阅读 1,748评论 0 0