【笔记】Python3操作Redis数据库

前言

Python3操作Redis数据库

下载依赖

1
pip3 install redis

引入依赖

1
import 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存在时才执行(修改)

  • 执行成功返回True,执行失败返回None
1
result = conn.set('<key>', '<value>', xx=True)

只有key不存在时才执行(新增)

  • 执行成功返回True,执行失败返回None
1
result = conn.set('<key>', '<value>', nx=True)
1
result = conn.setnx('<key>', '<value>')

查询数据

1
conn.get('<key>')

批量新增

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.hkeys('<key>')

查询所有的值

1
conn.hvals('<key>')

根据键取值

单个
1
conn.hget('<key>', '<value_key>')
多个
1
conn.hmget('<key>', '<value_key_1>', '<value_key_2>')

查询所有键值对

1
conn.hgetall('<key>')

批量新增

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>])

判断是否存在

  • 存在返回True,不存在返回False
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>')

查询列表长度

1
conn.llen('<key>')

查询一组列表中的值

<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.lpop('<key>')

弹出最右侧的值

1
conn.rpop('<key>')

删除索引之外的值

  • 只保留指定索引中的值,删除索引之外的值
1
conn.ltrim("list2", <index_start>, <index_end>)

对无序集合数据(无序set)的操作

新增数据

  • 如果集合不存在,就先新增集合,再添加数据
1
conn.sadd('<key>', '<value_1>', '<value_2>')

查询集合长度

1
conn.scard('<key>')

查询集合中所有值

返回Python列表

1
conn.smembers('<key>')

返回Python元祖

1
conn.sscan('<key>')

返回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>')

随机弹出集合中的值

  • 随机删除值,并返回这个值
1
conn.spop('<key>')

对有序集合数据(有序set)的操作

新增数据

  • 如果集合不存在,就先新增集合,再添加数据
1
conn.zadd('<key>', '<value_1>', '<value_2>')

查询集合长度

1
conn.zcard('<key>')

查询集合中的所有值

返回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>)

对任意类型数据的操作

根据键删除指定数据

1
conn.delete('<key>')

根据键判断指定数据是否存在

1
conn.exists('<key>')

根据键重新指定过期时间

<num>:过期时间,单位秒

1
conn.expire('<key>', time=<num>)

为指定键重命名键名

1
conn.rename('<key>', '<key_new>')

随机获取一个键

1
conn.randomkey()

根据键获取数据类型

1
conn.type('<key>')

完成

参考文献

菜鸟笔记