前言
Python3操作Redis数据库
下载依赖
引入依赖
创建连接对象
无密码
1
| conn = redis.Redis(host='<ip>', port=6379, db=0)
|
有密码
1
| conn = redis.Redis(host='<ip>', port=6379, db=0, password='<password>')
|
对字符串数据(string)的操作
新增或修改数据
ex=<num>:指定过期时间,单位秒
px=<num>:指定过期时间,单位毫秒
无论key是否存在都执行(覆盖)
1
| conn.set('<key>', '<value>')
|
只有key存在时才执行(修改)
1
| result = conn.set('<key>', '<value>', xx=True)
|
只有key不存在时才执行(新增)
1
| result = conn.set('<key>', '<value>', nx=True)
|
1
| result = conn.setnx('<key>', '<value>')
|
查询数据
批量新增
1
| conn.mset({<key_1>: <value>, <key_2>: <value>})
|
批量查询
1
| conn.mget(<key_1>, <key_2>)
|
对键值对数据(map)的操作
新增键值对
1
| conn.hset('<key>', '<value_key>', '<value_value>')
|
只有key不存在时才执行(新增)
1
| conn.hsetnx('<key>', '<value_key>', '<value_value>')
|
查询键值对
查询所有的键
查询所有的值
根据键取值
单个
1
| conn.hget('<key>', '<value_key>')
|
多个
1
| conn.hmget('<key>', '<value_key_1>', '<value_key_2>')
|
查询所有键值对
批量新增
1
| conn.hmset('<key>', {<value_key_1>: <value_value>, <value_key_2>: <value_value>})
|
批量查询
1
| conn.hmget('<key>', <value_key_1>, <value_key_2>)
|
1
| conn.hmget('<key>', [<value_key_1>, <value_key_2>])
|
判断是否存在
1
| result = conn.hexists('<key>', '<value_key>')
|
删除键值对
1
| conn.hdel('<key>', '<value_key>')
|
对列表数据(list)的操作
新增或修改列表
无论key是否存在都执行(覆盖)
从左侧新增
1
| conn.lpush('<key>', '<value_1>', '<value_2>')
|
从右侧新增
1
| conn.rpush('<key>', '<value_1>', '<value_2>')
|
只有key存在时才执行(修改)
从左侧新增
1
| conn.lpushx('<key>', '<value_1>', '<value_2>')
|
从右侧新增
1
| conn.rpushx('<key>', '<value_1>', '<value_2>')
|
查询列表长度
查询一组列表中的值
<index_start>:开始索引,可以为负数
<index_end>:结束索引,可以为负数
1
| conn.lrange('<key>', <index_start>, <index_end>)
|
修改列表中指定索引的值
1
| conn.lset('<key>', <index>, '<value>')
|
寻找指定值并从列表中删除
<count>:删除次数
正数:从左向右删除与这个值相同的值,并指定删除的次数
负数:从右向左删除与这个值相同的值,并指定删除的次数
0:删除所有与这个值相同的值
1
| conn.lrem('<key>', '<value>', <count>)
|
弹出列表中的值
弹出最左侧的值
弹出最右侧的值
删除索引之外的值
1
| conn.ltrim("list2", <index_start>, <index_end>)
|
对无序集合数据(无序set)的操作
新增数据
1
| conn.sadd('<key>', '<value_1>', '<value_2>')
|
查询集合长度
查询集合中所有值
返回Python列表
返回Python元祖
返回Python迭代器
1
| conn.sscan_iter('<key>')
|
集合运算
求交集
1
| conn.sinter('<key_1>', '<key_2>')
|
将交集组织为新的集合
<key_3>:新的集合的键
1
| conn.sinterstore('<key_3>', '<key_1>', '<key_2>')
|
求并集
1
| coon.sunion('<key_1>', '<key_2>')
|
将结果组织为新的集合
<key_3>:新的集合的键
1
| conn.sunionstore('<key_3>', '<key_1>', '<key_2>')
|
求差集
- 在集合
<key_1>中但是不在集合<key_2>中的数据
1
| conn.sdiff('<key_1>', '<key_2>')
|
将结果组织为新的集合
<key_3>:新的集合的键
1
| conn.sdiffstore('<key_3>', '<key_1>', '<key_2>')
|
判断集合中的指定值是否存在
1
| conn.sismember('<key>', '<value>')
|
删除集合中指定的值
1
| conn.srem('<key>', '<value>')
|
随机弹出集合中的值
对有序集合数据(有序set)的操作
新增数据
1
| conn.zadd('<key>', '<value_1>', '<value_2>')
|
查询集合长度
查询集合中的所有值
返回Python迭代器
1
| conn.zscan_iter('<key>')
|
根据索引范围查询一组集合中的值
1
| conn.zrange('<key>', <index_start>, <index_end>)
|
结果包含分数
1
| conn.zrange('<key>', <index_start>, <index_end>, withscores=True)
|
根据分数范围查询一组集合中的值
1
| conn.zrangebyscore('<key>', <score_start>, <score_end>)
|
结果包含分数
1
| conn.zrangebyscore('<key>', <score_start>, <score_end>, withscores=True)
|
结果根据分数排序
正序
1
| conn.zrangebyscore('<key>', <score_start>, <score_end>)
|
倒序
1
| conn.zscan('<key>', <score_start>, <score_end>)
|
将集合内的指定值自增
1
| conn.zincrby('<key>', '<value>', amount=<num>)
|
寻找指定值并获取其索引
1
| conn.zrank('<key>', '<value>')
|
寻找指定值并删除这个值
1
| conn.zrem('<key>', '<value>')
|
删除集合中指定排行范围的值
1
| conn.zremrangebyrank('<key>', <score_start>, <score_end>)
|
删除集合中指定分数范围的值
1
| conn.zremrangebyscore('<key>', <score_start>, <score_end>)
|
对任意类型数据的操作
根据键删除指定数据
根据键判断指定数据是否存在
根据键重新指定过期时间
<num>:过期时间,单位秒
1
| conn.expire('<key>', time=<num>)
|
为指定键重命名键名
1
| conn.rename('<key>', '<key_new>')
|
随机获取一个键
根据键获取数据类型
完成
参考文献
菜鸟笔记