python操作redis

  • Post author:
  • Post category:python




一、安装

pip install redis



二、使用



连接

'''
提供两个类 Redis 和 StrictRedis, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本。
没设置密码时不需要加password
取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串。
'''

import redis

r = redis.StrictRedis(host='localhost', port=6379, db=0, password='redis',decode_responses=True)
r.set('key','value')
print(r.get('key'))



连接池

import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.set('key2','value2')
print(r.get('key2'))



string



set
import redis
import time
'''
set(name, value, ex=None, px=None, nx=False, xx=False)

ex - 过期时间(秒)
px - 过期时间(毫秒)
nx - 如果设置为True,则只有name不存在时,当前set操作才执行
xx - 如果设置为True,则只有name存在时,当前set操作才执行
'''

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

r.set('key2','value2',ex=1)

print(r.get('key2'))
time.sleep(2)
print(r.get('key2'))


mset
'''
批量存储
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

r.mset({'key3':'value3','key4':'value4'})

print(r.mget('key3','key4'))


getset
'''
设置新值并获取原来的值
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.mset({'key3':'value3','key4':'value4'})

res = r.getset('key4','value5')

print(res)
print(r.mget('key3','key4'))


getrange
'''
获取子序列(根据字节获取,非字符)
一个汉字3个字节 1个字母一个字节 每个字节8bit

参数:
    name
    start - 起始位置(字节)
    end - 结束位置(字节)
'''

import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

print(r.getrange('key3', 0, 2))


strlen
'''
返回name对应值的字节长度(一个汉字3个字节)
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

print(r.strlen('key3'))


incr/decr
'''
自增 name 对应的值,当 name 不存在时,则创建 name=amount/-amount,否则,则自增/自减。

参数:
    name
    amount - 自增数(必须是整数)
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

r.incr('key_incr', amount=3)
print(r.get('key_incr'))


incrbyfloat
'''
自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。

参数:
    name
    amount - 自增数(浮点型)
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

r.incrbyfloat('key_incrbyfloat', amount=3.5)
print(r.get('key_incrbyfloat'))


append
'''
在redis name对应的值后面追加内容

参数:
    key - name
    value - 要追加的字符串
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

r.append('key1', 'ooo')
print(r.get('key1'))



map



hset
'''
name对应的hash中设置一个键值对(不存在,则创建;否则,修改)

参数:
    name
    key - name对应的hash中的key
    value - name对应的hash中的value
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

r.hset("hash1", "k1", "v1")
r.hset("hash1", "k2", "v2")

print(r.hgetall("hash1")) #取出所有的键值对
print(r.hlen("hash1")) #得到所有键值对的格式 hash长度
print(r.hkeys("hash1")) # 取hash中所有的key
print(r.hvals("hash1")) # 取hash中所有的value
print(r.hget("hash1", "k1"))    # 单个取hash的key对应的值
print(r.hmget("hash1", "k1", "k2")) # 多个取hash的key对应的值
print(r.hexists("hash1", "k1")) #判断成员是否存在(类似字典的in)


hmset
'''
在name对应的hash中批量设置键值对

参数:
    name
    mapping - 字典,如:{'k1':'v1', 'k2': 'v2'}
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

r.hmset("hash2", {"k2": "v2", "k3": "v3"})

print(r.hgetall("hash2")) #取出所有的键值对
print(r.hlen("hash2")) #得到所有键值对的格式 hash长度
print(r.hkeys("hash2")) # 取hash中所有的key
print(r.hvals("hash2")) # 取hash中所有的value
print(r.hget("hash2", "k2"))    # 单个取hash的key对应的值
print(r.hmget("hash2", "k2", "k3")) # 多个取hash的key对应的值
print(r.hexists("hash2", "k1")) #判断成员是否存在(类似字典的in)


hdel
'''
删除键值对
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)

r.hdel("hash1", "k1")

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


hincrby(整数)/hincrbyfloat(浮点数)
'''
自增name对应的hash中的指定key的值,不存在则创建key=amount

参数:
    name
    key - hash对应的key
    amount - 自增数(整数)
'''
import redis

pool = redis.ConnectionPool(db=0, host='localhost', port=6379, password='redis',decode_responses=True,max_connections=5)
r = redis.Redis(connection_pool=pool)
r.hset("hash1", "k3", 123)

r.hincrby("hash1", "k3", amount=-1)

print(r.hgetall("hash1"))



版权声明:本文为qq_43655307原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。