你的位置:欧宝登入 > 欧宝登入介绍 > >Python实战:使用redis
热点资讯
欧宝登入介绍

Python实战:使用redis

发布日期:2024-12-22 10:53    点击次数:90

Redis和redis-py 安装redis-py库 连接Redis 常用命令 高级功能

💡 Redis和redis-py

Redis(Remote Dictionary Server)是一个开源的缓存数据库,遵守 BSD 协议,它提供了一个高性能的键值(key-value)存储系统,常用于缓存、消息队列、会话存储等应用场景。

redis-py是Redis 官方提供的Python 客户端库,python可以通过redis-py与 Redis 进行交互,redis-py中提供了 Redis 的多种数据结构的基本操作,如 set、get、incr、decr、rpush、lpush、llen、lrange、ltrim 等。

🔨redis-py的安装

展开剩余89%

在使用 redis-py 之前,我们需要确保 redis-py 已安装。如果未安装,可以使用以下命令安装最新版的 redis-py:

pip install redis

🚀 连接Redis

Redis 安装的时候,默认是无密码的,可以通过配置文件设置密码。

python 连接 redis 一般有两种情况(有密码、无密码)。

有密码:

import redis

r=redis.Redis(host="192.168.1.11",port=6379,db=0,password="123456")

无密码:

import redis

r=redis.Redis(host='192.168.1.11', port=6379, db=0)

上面的连接方式属于普通连接,在生产环境中通常使用连接池 (connection pool) 的连接方式,通过连接池管理所有的连接,避免每次建立、释放连接带来的开销。

import redis

pool=redis.ConnectionPool(host='192.168.1.11', port=6379, db=0)

r=redis.Redis(connection_pool=pool)

注意:若出现中文乱码

通常需要在连接时,除了host、port等,还需增加3个配置项:decode_responses=True, charset='UTF-8', encoding='UTF-8'

🚀 常用命令

实例一:set,mset 添加

在 Redis 中设置k-v时,默认不存在就创建,存在就修改

此外 set 设置的时候还可以加入过期时间(类似 cookie 有效期这样),一旦过期之后,再通过 key 去取 value 时,value 的结果为 None。

# 添加

r.set('name1', 'chenge')

# 设置过期时间(秒),5秒过期

r.setex('key1',5,'value1')

# 设置过期时间(毫秒),1000耗秒过期

r.psetex("key2",1000,"value2")

# 不常用,mset是设置多个

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

实例二:get,获取

r.get('key1')

实例三:列表,List操作

Redis 中的 List 在内存中按照一个 key 对应一个 List 来存储,是有序的字符串列表结构,支持从两端插入和删除元素。

r.lpush("key7",1)

r.lpush("key7",2,3,4)

# 保存在列表中的顺序为4,3,2,1

r.rpush("key8",1)

r.rpush("key8",2,3,4)

# 保存在列表中的顺序为1,2,3,4

# 添加数据到列表

r.rpush('mylist', 'Python', 'Java', 'C++')

# 移除列表最后一个元素

r.rpop('mylist')

# lrange (name, start, end)

# 分片获取元素

# 获取列表所有元素

print(r.lrange('mylist', 0, -1))

实例四:哈希表,Hash操作

Redis 中的 hash 在内存中类似一个 key 对应一个 dict 来存储。Redis 哈希表是一个键值对集合,可以用于存储和读取对象字段,比如用户信息、文章信息等。Redis 提供了一系列的命令如 hset、hget、hmset、hmget、hincrby 等用于操作哈希表。

# 写入哈希表

r.hset('user', 'name', 'Tom')

r.hset('user', 'age', 18)

# 获取哈希表指定键的值

print(r.hget('user','name'))

# 获取哈希表所有键值对

print(r.hgetall('user'))

实例五:集合,Set操作

Redis 集合是一组无序集合,支持添加、删除和检查元素是否存在等操作。Set 集合可以理解为不允许重复的列表。Redis 提供了一系列的命令如 sadd、 a.smanager.cn/u/wm5A2.PHP srem、smembers、sismember 等。

# 添加元素到集合

r.sadd('myset', 'A', 'B', 'C')

# 判断元素是否存在于集合

print(r.sismember('myset', 'A'))

# 获取集合所有元素

print(r.smembers('myset'))

实例六:有序集合,zset

有序集合是在集合的基础上,为每一个元素排序。每个元素都有一个对应的分数(score),可以根据分数排序。Redis 提供了一系列的命令如 zadd、zscore、zrange、zrem 等。

zadd(name, 55t.smanager.cn/u/gdYj3.PHP mapping),其中 name 为有序集合名,mapping 为 dict 类型的键 - 值对

zcard(name),获取有序集合内元素的数量

zcount(88a.smanager.cn/u/62FH9.PHP name, min, max),# 获取有序集合中分数在 [min,max] 之间的个数

# 添加元素到有序集合

r.zadd('mysortedset', {'A': 1, 'B': 2, 'C': 3})

# 获取有序集合元素

print(new.smanager.cn/u/y6iqB.PHP r.zrange('mysortedset', 0, -1, withscores=True))

📈 高级功能

Redis 支持发布/订阅模式:

import redis

# 连接 Redis 服务器

r = redis.Redis(wap.smanager.cn/u/hs7HF.PHP host='192.168.11.123', port=6379, db=0)

# 往通道 channel1 上,发布消息

r.publish(smanager.cn/u/Ux8gv.PHP 'channel1', 'hello python')

# 订阅消息

p = r.pubsub()

p.subscribe(www.smanager.cn/u/420x6.PHP 'channel1')

for message in p.listen():

print(message)

💪 总结

Redis 可以用于各种不同的应用场景:

缓存数据库 (Cache Database):提高应用程序的性能、响应速度,同时减少DB的访问压力。 发布/订阅系统 (Messaging System):支持不同的应用程序之间的数据交换。 分布式锁 (Distributed Lock ):用于多个客户端之间的并发操作时的同步控制,实现数据的一致性。 实时榜单记录 (Real-time Ranking):Redis 的有序性易于实现实时榜单统计或微博点赞等。

让我们一起用Python操作Redis数据库吧!

发布于:重庆市

上一篇:【ETF动向】11月22日南方中证申万有色金属ETF基金跌2.62%,份额减少500万份
下一篇:没有了
友情链接: