redis与python交互中,列表数据出现的问题

redis与python交互中,列表数据出现的问题

1、在对字符串操作时:

redis_db.py是封装的redis连接池

# 业务逻辑处理部分:

import redis

from redis_db import pool

con = redis.Redis(
    connection_pool=pool
)
con.mset({'country': '中国', 'city': '乌鲁木齐'})
res = con.mget('country', 'city')
for i in res:
    print(i.decode('utf-8'))
con.delete('country', 'city')
del con

# 多次执行业务逻辑部分的代码,最终结果生成记录不会累积,始终是2个记录

https://img1.sycdn.imooc.com//climg/6449d296096ff1c902380180.jpg


2、在对列表数据进行操作时

redis_db.py是封装的redis连接池

# 业务逻辑处理部分:

import redis

from redis_db import pool

con = redis.Redis(
    connection_pool=pool
)
try:
    # con.delete('dname')
    con.rpush('dname', '董事会', '秘书处', '售后部', '技术部')
    con.lpop('dname')
    result = con.lrange('dname', 0, -1)
    for i in result:
        print(i.decode('utf-8'))
except Exception as e:
    print(e)
finally:
    del con

# 多次执行业务逻辑部分的代码,结果会随着执行次数,不断累积。必须在每次执行前,delete掉dname,最终结果才会正确。


## 不加delete,多次执行结果:

https://img1.sycdn.imooc.com//climg/6449d3bf09aa624901960454.jpg

## 加delete,多次执行结果:

https://img1.sycdn.imooc.com//climg/6449d3fc09133fde01840250.jpg


请问,为什么字符串和列表的数据操作,字符串不添加delete,多次执行,结果不会累积;列表的多次执行,不添加delete,就会出现数据累积,为什么会有这么大的区别?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小猿 2023-04-27 11:02:52

同学,你好!rpush 是向redis 中插入内容,执行一次插入一次  '董事会', '秘书处', '售后部', '技术部'

https://img1.sycdn.imooc.com//climg/6449e55609b5e74904880185.jpg

lrange 是像redis 通过dname 键取到redis 中的值,这与字符串、列表没有关系

祝学习愉快~

  • 提问者 麦兜搞_IT #1

    我是不是可以理解为:set在数据添加中,有相同的覆盖,无相同的新增,所以多次执行set,不会出现数据累积的情况;而rpush是插入数据,不会覆盖相同的内容,所以多次执行,才会出现数据累积增加的情况。

    2023-04-27 11:11:00
  • 好帮手慕小猿 回复 提问者 麦兜搞_IT #2

    同学,你好!可以这样理解的

    祝学习愉快~

    2023-04-27 11:23:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师