python操作redis

Posted ldsice

tags:

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

安装
pip install redis
引入模块
import redis
连接
try:
r=redis.StrictRedis(host=‘localhost‘,port=6379)
except Exception,e:
print e.message

方式一:根据数据类型的不同,调用相应的方法,完成读写
更多方法同前面学的命令
r.set(‘name‘,‘hello‘)
r.get(‘name‘)

方式二:pipline
缓冲多条命令,然后一次性执行,减少服务器-客户端之间TCP数据库包,从而提高效率
pipe = r.pipeline()
pipe.set(‘name‘, ‘world‘)
pipe.get(‘name‘)
pipe.execute()

 

 


# set(name, value, ex=None, px=None, nx=False, xx=False)
# 在Redis中设置值,默认,不存在则创建,存在则修改
# 参数:
# ex,过期时间(秒)
# px,过期时间(毫秒)
# nx,如果设置为True,则只有name不存在时,当前set操作才执行
# xx,如果设置为True,则只有name存在时,当前set操作才执行

import redis
import time

pool = redis.ConnectionPool(host=‘localhost‘, port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

# r.set(‘food‘,‘mutton‘, ex=30)
# print(r.get(‘food‘))

# print(r.set(‘fruit‘, ‘watermelon‘, nx=True))

# print((r.set(‘fruit‘, ‘watermelon‘, xx=True)))


# r.setex("fruit2", 5, "orange")
# time.sleep(5)
# print(r.get("fruit2"))

# r.mget(‘k1‘:‘v1‘, ‘k2‘:‘v2‘)
# r.mset(k1="v1", k2="v2")
# print(r.mget("k1", "k2"))
# print(r.mget("k1"))

# 设置新值并获取原来的值
# print(r.getset("food", "aa"))

#获取子序列(根据字节获取,非字符)
r.set("cn_name", "峻熙大大")
print(r.getrange("cn_name", 0, 2))
print(r.getrange("cn_name", 0, -1))

r.set("en_name", "junxi")
print(r.getrange("en_name", 0, 2))
print(r.getrange("en_name", 0, -1))

#修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
r.setrange("en_name", 1, "ccc")
print(r.get("en_name"))

#对name对应值的二进制表示的位进行操作
source = "陈思维"
source = "foo"
for i in source:
num = ord(i)
print(bin(num).replace(‘b‘, ‘‘))

 

 

import redis
import time
pool = redis.ConnectionPool(host=‘localhost‘, port = 6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

#单个增加--修改(单个取出)--没有就新增,有的话就修改
r.hset("hash1", "k1", "v1")
r.hset("hash1", "k2", "v2")

print(r.hkeys("hash1"))
print(r.hget("hash1", "k1"))
print(r.hmget("hash1", "k1", "k2"))
r.hsetnx("hash1", "k2", "v3")
print(r.hget("hash1", "k2"))

#批量增加(取出)

print("批量增加:-----------------------")
r.hmset("hash2", "k2":"v2", "k3": "v3")

print(r.hget("hash2", "k2"))
print(r.hmget("hash2", "k2", "k3"))
print(r.hmget("hash2", ["k2", "k3"]))

# 取出所有的键值对
print("取出所有的键值对:-----------------")
print(r.hgetall("hash1"))

# 得到所有键值对的格式 hash长度
print("得到所有键值对的格式 hash长度------")
print(r.hlen("hash1"))

# 得到所有的keys(类似字典的取所有keys)
print("得到所有的keys--------------------")
print(r.hkeys("hash1"))

#得到所有的value
print("得到所有的value--------------------")
print(r.hvals("hash1"))

#判断成员是否存在(类似字典的in)
print("判断成员是否存在--------------------")
print(r.hexists("hash1", "k4"))
print(r.hexists("hash1", "k1"))

#删除键值对
print("删除键值对--------------------------")
print(r.hgetall("hash1"))
r.hset("hash1", "k2", "v222")
r.hset("hash1", "k11", "v1")
r.hdel("hash1", "k1")
print(r.hgetall("hash1"))

#自增自减整数
print("自增自减整数--------------------------")
r.hset("hash1", "k3", 123)
r.hincrby("hash1", "k3", amount=-1)
print(r.hgetall("hash1"))
r.hincrby("hash1", "k4", amount=1)
print(r.hgetall("hash1"))

#取值查看--分片读取
print("取值查看--分片读取----------------------")
print(r.hscan("hash1"))

#利用yield封装hscan创建生成器
print("利用yield封装hscan创建生成器")
for item in r.hscan_iter(‘hash1‘):
print(item)

print(r.hscan_iter("hash1"))

 

import redis
pool = redis.ConnectionPool(host=‘localhost‘, port = 6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

#增加(类似于list的append,只是这里是从左边新增加)
# print("增加(类似于list的append,只是这里是从左边新增加)")
# r.lpush("list1", 11, 22, 33)
# print(r.lrange(‘list1‘, 0, -1))

#增加(从右边增加)--没有就新建
# print("增加(从右边增加)--没有就新建")
# r.rpush("list2", 11, 22, 33)
# print(r.llen("list2"))
# print(r.lrange("list2", 0, 3))


#往已经有的name的列表的左边添加元素
# print("往已经有的name的列表的左边添加元素")
# r.lpushx("list10", 10)
# print(r.llen("list10"))
# print(r.lrange("list10", 0, -1))
#
# r.lpush("list2", 77)
# print(r.llen("list2"))
# print(r.lrange("list2", 0, -1))

#往已经有的name的列表的右边添加元素
# r.rpushx("list10", 10)
# print(r.llen("list10"))
# print(r.lrange("list10", 0, -1))
#
# r.lpushx("list2", 77)
# print(r.llen("list2"))
# print(r.lrange("lsit2", 0, -1))

#新增
# print("新增")
#
# r.linsert("list2", "before", "11", "00")
# print(r.lrange("list2", 0, -1))
#
# r.lset("list2", 0, -11)
# print(r.lrange("list2", 0, -1))

#删除
print("删除")
r.lrem("list2", "-11", 1)
print(r.lrange("list2", 0, -1))

 

以上是关于python操作redis的主要内容,如果未能解决你的问题,请参考以下文章

redis 基本操作-python 使用redis-手机验证接口-发送短信接口

Redis Python - 如何在python中根据特定模式删除所有键,无需python迭代

python中使用redis

python 的 redis 库,连接池怎么用

redis python scan_iter 给出不同的键

python 文件操作python 文件操作