遇见更好的自己

Redis在Python中的基本用法

2020-06-05  本文已影响0人  JairusTse

概述

Redis是一种键值数据库,属于非关系型数据库的一种,具有极高的读写性能,适合用于处理大量数据的高访问负载。可以用来做缓存,做队列,去重,实现计分板和实现发布/订阅功能。

安装

在MacOs安装Redis

$ brew install redis

启动

$ redis-server /usr/local/etc/redis.conf

Python安装Redis库

$ pip3 install redis

Python创建Redis连接

import redis

client = redis.Redis()

Python中对Redis所有的操作都是使用client对象来进行。

基础数据结构

字符串

# 创建(nx可省略,为True时已有key不覆盖)
client.set('key', 'value', nx=True)

# 获取所有key
client.keys()

# 查询
client.get('key')

# 拼接字符串
client.append('key', 'append_value')

# 增加(n省略时默认为1)
client.incr('key', n)

# 减小(n省略时默认为1)
client.dect('key', n)

列表

# 左右侧添加
client.lpush('key', 'value1', ... , 'valueN')
client.lpush('key', *datas)

client.rpush('key', 'value1', ... , 'valueN')
client.rpush('key', *datas)

# 查看列表长度
client.llen('key')

# 查询列表一定索引范围的数据:(0, -1)为全部数据
client.lrange('key', 开始索引, 结束索引)

# 左右弹出数据(弹出的数据会被删除)
client.lpop('key')
client.rpop('key')

# 修改数据
client.lset('key', index, value)

集合

# 添加数据
client.sadd('key', 'value1', ... , 'valueN')
client.sadd('key', *datas)

# 查看数据条数
client.scard('key')

# 随机获取一条数据并删除
client.spop('key')

# 获取全部数据
client.smembers('key')


# 删除数据
client.srem('key', 'value')

# 求交集(得到key1到keyN集合的交集)
client.sinter('key1', ... , 'keyN')

# 求并集(得到key1到keyN集合的并集)
client.sunion('key1', ... , 'keyN')

# 求差集(得到key1和后面集合的差集)
client.sdiff('key1', ... , 'keyN')

高级数据结构

哈希表

哈希表适合保存大量键值对,无论有多少键值对,查询时间始终不变。相同数量的键值对存储空间只需字符串的1/4。

# 添加
client.hset('key', '字段名', '值')
client.hmset('key', {'字段名1': '值1', ... , '字段名n': '值n'})

# 获取所有字段名
client.hkeys('key')

# 获取一个字段的值
client.hget('key', '字段名')

# 获取多个字段的值
client.hmget('key', ['字段名1', ..., '字段名n'])

# 获取所有字段名和值
client.hgetall('key')

# 判断字段是否存在
client.hexists('key', '字段名')

# 获取字段数量
client.hlen('key')

# 删除字段
client.hdel('key', '字段名')

发布消息/订阅频道

# 发布消息
client.publish('频道名', '消息')

# 订阅频道
listener = client.pubsub()
listener.subscribe('频道名1', ..., '频道名n')
for message in listener.listen():
    channel = message['channel'].decode()
    data = message['data'].decode()

有序集合

# 添加
client.zadd('key', 值1, 评分1, ..., 值n, 评分n)
client.zadd('key', 值1=评分1, ..., 值n=评分n)

# 修改评分(改变量格式为3、-3)
client.zincrby('key', 值, 改变量)

# 根据评分范围排序(小-大)
client.zrangebyscore('key', 上限, 下限, 开始位置, 数量, withscores=True)

# 根据评分范围排序(大-小)
client.zrevrangebyscore('key', 上限, 下限, 开始位置, 数量, withscores=True)

# 根据位置排序(小-大)
client.zrange('key', 开始位置, 结束位置, withscores=True)

# 根据位置排序(大-小)
client.zrevrange('key', 开始位置, 结束位置, withscores=True)

# 查询排名(顺序/倒序)
client.zrank('key', '值')
client.zrevrank('key', '值')

# 查询评分
client.zscore('key', '值')

# 查询评分范围内值的数量
client.zcount('key', 评分下限, 评分上限)

欢迎关注我的公众号:JairusTse的日常,一起撸代码,跑步,读书。

JairusTse的日常
上一篇下一篇

猜你喜欢

热点阅读