redis+python练习小问题

 

1、“cannot import name 'Redis' from 'redis' "

//python文件名用了“redis.py”,改成其他的就好了。这个一定要注意,很容易犯这种错,想要做什么功能,就用这个功能命名。

2、NameError:name 'redis' is not defined

//我开始是from redis import Redis,改成import redis,就可以了

3、set第一次后,隔了两天继续set,就报错“【Redis】报错:Redis is configured to save RDB snapshots, but it is currently not able to persist on disk”

//是因为强制把redis快照关闭了,导致不能持久化的问题,在网上查了一些相关解决方案,通过stop-writes-on-bgsave-error值设置为no即可避免这种问题。命令行下如下操作:

127.0.0.1:6379> config set stop-writes-on-bgsave-error no

 

【练习】请将 Redis 作为 Python 的消息队列,实现消息的顺序存储和顺序读取。Python 进程结束再重新启动,保证消息队列中的数据不会丢失。

 

import redis
import atexit

# 连接到本地Redis服务器,默认端口是6379
redis_client = redis.Redis(host='localhost', port=6379, decode_responses=True)

# 定义消息队列的键名
message_queue_key = 'message_queue'

# 在程序退出时保存队列数据到Redis
def save_queue_to_redis():
redis_client.ltrim(message_queue_key, 0, -1)

# 在程序退出时注册保存队列数据到Redis的函数
atexit.register(save_queue_to_redis)

# 生产者向队列中添加消息
def enqueue_message(message):
redis_client.rpush(message_queue_key, message)

# 消费者从队列中获取消息
def dequeue_message():
return redis_client.lpop(message_queue_key)

# 添加两条消息
enqueue_message("Message 1")
enqueue_message("Message 2")

# 在重新启动后,从队列中读取消息
message = dequeue_message()
while message:
print("Received Message:", message)
message = dequeue_message()
posted @ 2024-02-04 17:05  1234roro  阅读(52)  评论(0)    收藏  举报