python 包之 redis 数据库操作教程

Posted autofelix

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 包之 redis 数据库操作教程相关的知识,希望对你有一定的参考价值。

一、安装

  • redis 是一个 Key-Value 数据库
  • Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型
pip install redis


二、连接

import redis

# 方式一
r = redis.StrictRedis(host=localhost, port=6379, db=0)

# 方式二
r = redis.Redis(host=localhost, port=6379, decode_responses=True)

# 方式三,连接池
pool = redis.ConnectionPool(host=localhost, port=6379, decode_responses=True)
r = redis.Redis(host=localhost, port=6379, decode_responses=True)


三、string基本命令

import redis

r = redis.Redis(host=localhost, port=6379, decode_responses=True)

# 设置值并设置过期时间, ex单位: 秒
r.set(food, mutton, ex=3)
# 获取值
r.get(food)
# 设置值并设置过期时间, px单位: 毫秒
r.set(food, beef, px=3)
# nx=True时,则只有name不存在时,当前set操作才执行
r.set(fruit, watermelon, nx=True)
# xx=True时,则只有name存在时,当前set操作才执行
r.set(fruit, watermelon, xx=True)
# setnx设置值,只有name不存在时,执行设置操作
r.setnx(fruit1, banana)
# setex第一个参数是key,第二个是过期时间(秒),第三个是值
r.setex("fruit2", 5, "orange")
# psetex第一个参数是key,第二个是过期时间(毫秒),第三个是值
r.psetex("fruit3", 5000, "apple")
# 批量设置值 mset(*args, **kwargs)
r.mset(k1="v1", k2="v2")
# 批量获取
r.mget(k1, k2)
r.mget([k1, k2])
# 设置新值并获取原来的值
r.getset("food", "barbecue")
# 获取子序列(根据字节获取,非字符)
r.getrange("cn_name", 0, 2)
r.getrange("en_name", 0, -1)
# 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
r.setrange("en_name", 1, "ccc")
# 对 name 对应值的二进制表示的位进行操作
r.setbit(name, offset, value)
# 获取name对应的值的二进制表示中的某位的值,0或1
r.getbit("foo1", 0)
# 获取name对应的值的二进制表示中 1 的个数
r.bitcount("foo",0,1)
# 获取多个值,并将值做位运算,将最后的结果保存至新的name对应的值
r.bitop("AND","new","foo","foo1")
# 返回name对应值的字节长度(一个汉字3个字节)
r.strlen("foo")
# 自增 name 对应的值,当 name 不存在时,则创建 name=amount,否则,则自增。
r.incr("foo", amount=1)
# 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
r.incrbyfloat("foo1", amount=2.0)
# 自减 name 对应的值,当 name 不存在时,则创建 name=amount,否则,则自减。
r.decr("foo4", amount=3)
# 在redis name对应的值后面追加内容
r.append("name", "haha")


四、hash基本命令

import redis

r = redis.Redis(host=localhost, port=6379, decode_responses=True)

# name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
r.hset("hash1", "k1", "v1")
# 在name对应的hash中批量设置键值对
r.hmset("hash2", "k2": "v2", "k3": "v3")
# 在name对应的hash中获取根据key获取value
r.hmget("hash2", "k2", "k3")
r.hmget("hash2", ["k2", "k3"])
# 取出所有的键值对
r.hgetall("hash1")
# 得到所有键值对的格式 hash长度
r.hlen("hash1")
# 得到所有的keys(类似字典的取所有keys)
r.hkeys("hash1")
# 得到所有的value(类似字典的取所有value)
r.hvals("hash1")
# 判断成员是否存在(类似字典的in)
r.hexists("hash1", "k4")
# 删除键值对
r.hdel("hash1", "k1")
# 自增自减整数
r.hincrby("hash1", "k3", amount=-1)
# 自增自减浮点数
r.hincrbyfloat("hash1", "k5", amount=-1.0)
# 取值查看--分片读取
r.hscan("hash1")
# 利用yield封装hscan创建生成器,实现分批去redis中获取数据
for item in r.hscan_iter(hash1):
print(item)
print(r.hscan_iter("hash1"))


五、list基本命令

import redis

r = redis.Redis(host=localhost, port=6379, decode_responses=python 包之 mongodb 数据库操作教程

python 包之 JSON 轻量数据操作教程

python 包之 PyQuery 网页解析教程

python 包之 blinker 信号库教程

python 包之 pywin32 操控 windows 系统教程

python 包之 yagmail 发送邮件教程