Redis是一个基于内存的高效的(读的速度是110000次/s,写的速度是81000次/s)键值型非关系型数据库,存取效率极高,支持多种存储数据结构。Redis支持数据的备份,即master-slave模式的数据备份。
Python操作Redis请安装redis-py库,直接使用命令pip3 install redis
安装即可。
如果我们还需要多数据进行导入/导出工作我们还需要安装RedisDump库。由于它是基于Ruby实现的,所有我们需要先安装Ruby:
gem install redis-dump
安装RedisDump。但是安装RedisDump时可能会出现如下图所示问题:ruby dk.rb init
ruby dk.rb install
gem install redis-dump
安装RedisDump即可。redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令。Redis类是 StrictRedis的子类,它主要是用于向后兼容旧版本。官方推荐使用StrictRedis类。
from redis import StrictRedis
redis = StrictRedis(host='localhost',db=3,port=6379)#选择db3,redis没有密码默认为None
redis.set('age',20)
print(redis.get('age'))#往db3中设置age=3,打印验证
观察StrictRedis的__init__方法我们可以发现StrictRedis类使用host和port等参数构造一个ConnectionPool,所以我们可以直接将ConnetcionPool作为参数传入。
源码如下:
def __init__(self, host='localhost', port=6379,db=0, password=None,connection_pool=None):
if not connection_pool:#判断是否传入connection_pool作为参数
#其他代码
connection_pool = ConnectionPool(**kwargs)#构建ConnectionPool
self.connection_pool = connection_pool
示例代码:
from redis import StrictRedis,ConnectionPool
pool = ConnectionPool(host='localhost',port=6379,db=3,password=None)
redis = StrictRedis(connection_pool=pool)
redis.set('name','Jake')
print(redis.get('name'))
ConnectionPool支持通过URL构建,格式有以下3种:
redis://[:password]@host:port/db #redis tcp连接
rediss://[:password]@host:port/db #redis tcp+ssl连接
unix://[:password]@path/to/socket.sock?db=db #redis unix socket连接
示例代码:
from redis import StrictRedis,ConnectionPool
url = 'redis://@localhost:6379/3'
pool = ConnectionPool.from_url(url)#通过url构建ConnectionPool
redis = StrictRedis(connection_pool=pool)
redis.set('addr','beijing')
print(redis.get('addr'))
下表总结了键的一些判断和操作方法。
方法 |
作用 |
参数说明 |
示例 |
示例说明 |
示例结果 |
---|---|---|---|---|---|
|
判断一个键是否存在 |
|
|
是否存在 |
|
|
删除一个键 |
|
|
删除 |
1 |
|
判断键类型 |
|
|
判断 |
|
|
获取所有符合规则的键 |
|
|
获取所有以 |
|
|
获取随机的一个键 |
|
|
获取随机的一个键 |
|
|
重命名键 |
|
|
将 |
|
|
获取当前数据库中键的数目 |
|
|
获取当前数据库中键的数目 |
100 |
|
设定键的过期时间,单位为秒 |
|
|
将 |
|
|
获取键的过期时间,单位为秒,-1表示永久不过期 |
|
|
获取 |
-1 |
|
将键移动到其他数据库 |
|
|
将 |
|
|
删除当前选择数据库中的所有键 |
|
|
删除当前选择数据库中的所有键 |
|
|
删除所有数据库中的所有键 |
|
|
删除所有数据库中的所有键 |
|
Redis支持最基本的键值对形式存储,用法总结如下表所示。
方法 |
作用 |
参数说明 |
示例 |
示例说明 |
示例结果 |
---|---|---|---|---|---|
|
给数据库中键为 |
|
|
给 |
|
|
返回数据库中键为 |
|
|
返回 |
|
|
给数据库中键为 |
|
|
赋值 |
|
|
返回多个键对应的 |
|
|
返回 |
|
|
如果不存在这个键值对,则更新 |
|
|
如果 |
第一次运行结果是 |
|
设置可以对应的值为 |
|
|
将 |
|
|
设置指定键的 |
|
|
设置 |
11,修改后的字符串长度 |
|
批量赋值 |
|
|
将 |
|
|
键均不存在时才批量赋值 |
|
|
在 |
|
|
键为 |
|
|
|
1,即修改后的值 |
|
键为 |
|
|
|
-1,即修改后的值 |
|
键为 |
|
|
向键为 |
13,即修改后的字符串长度 |
|
返回键为 |
|
|
返回键为 |
|
|
获取键的 |
|
|
返回键为 |
|
Redis还提供了列表存储,列表内的元素可以重复,而且可以从两端存储,用法如下表所示。
方法 |
作用 |
参数说明 |
示例 |
示例说明 |
示例结果 |
---|---|---|---|---|---|
|
在键为 |
|
|
向键为 |
3,列表大小 |
|
在键为 |
|
|
向键为 |
4,列表大小 |
|
返回键为 |
|
|
返回键为 |
4 |
|
返回键为 |
|
|
返回起始索引为1终止索引为3的索引范围对应的列表 |
|
|
截取键为 |
|
|
保留键为 |
|
|
返回键为 |
|
|
返回键为 |
b’2′ |
|
给键为 |
|
|
将键为 |
|
|
删除 |
|
|
将键为 |
1,即删除的个数 |
|
返回并删除键为 |
|
|
返回并删除名为 |
|
|
返回并删除键为 |
|
|
返回并删除名为 |
|
|
返回并删除名称在 |
|
|
返回并删除键为 |
|
|
返回并删除键为 |
|
|
返回并删除名为 |
|
|
返回并删除名称为 |
|
|
将键为 |
|
Redis还提供了集合存储,集合中的元素都是不重复的,用法如下表所示。
方法 |
作用 |
参数说明 |
示例 |
示例说明 |
示例结果 |
---|---|---|---|---|---|
|
向键为 |
|
|
向键为 |
3,即插入的数据个数 |
|
从键为 |
|
|
从键为 |
1,即删除的数据个数 |
|
随机返回并删除键为 |
|
|
从键为 |
|
|
从 |
|
|
从键为 |
|
|
返回键为 |
|
|
获取键为 |
3 |
|
测试 |
|
|
判断 |
|
|
返回所有给定键的集合的交集 |
|
|
返回键为 |
|
|
求交集并将交集保存到 |
|
|
求键为 |
1 |
|
返回所有给定键的集合的并集 |
|
|
返回键为 |
|
|
求并集并将并集保存到 |
|
|
求键为 |
3 |
|
返回所有给定键的集合的差集 |
|
|
返回键为 |
|
|
求差集并将差集保存到 |
|
|
求键为tags |
3 |
|
返回键为 |
|
|
返回键为 |
|
|
随机返回键为 |
|
|
随机返回键为 |
有序集合比集合多了一个分数字段,利用它可以对集合中的数据进行排序,其用法总结如下表所示。
方法 |
作用 |
参数说明 |
示例 |
示例说明 |
示例结果 |
---|---|---|---|---|---|
|
向键为 |
|
|
向键为 |
2,即添加的元素个数 |
|
删除键为 |
|
|
从键为 |
1,即删除的元素个数 |
|
如果在键为 |
|
|
键为 |
98.0,即修改后的值 |
|
返回键为 |
|
|
得到键为 |
1 |
|
返回键为 |
|
|
得到键为 |
2 |
|
返回键为 |
|
|
返回键为 |
|
|
返回键为 |
|
|
返回键为 |
|
|
返回键为 |
|
|
返回键为 |
2 |
|
返回键为 |
|
|
获取键为 |
3 |
|
删除键为 |
|
|
删除键为 |
1,即删除的元素个数 |
|
删除键为 |
|
|
删除 |
1,即删除的元素个数 |
Redis还提供了散列表的数据结构,我们可以用name
指定一个散列表的名称,表内存储了各个键值对,用法总结如下表所示。
表5-10 散列操作
方法 |
作用 |
参数说明 |
示例 |
示例说明 |
示例结果 |
---|---|---|---|---|---|
|
向键为 |
|
|
向键为 |
1,即添加的映射个数 |
|
如果映射键名不存在,则向键为 |
|
|
向键为 |
1,即添加的映射个数 |
|
返回键为 |
|
|
获取键为 |
5 |
|
返回键为 |
|
|
获取键为 |
|
|
向键为 |
|
|
向键为 |
|
|
将键为 |
|
|
|
6,修改后的值 |
|
键为 |
|
|
键为 |
|
|
在键为 |
|
|
从键为 |
|
|
从键为 |
|
|
从键为 |
6 |
|
从键为 |
|
|
从键为 |
|
|
从键为 |
|
|
从键为 |
|
|
从键为 |
|
|
从键为 |
|