当前位置: 首页 > news >正文

redis | 认识非关系型数据库Redis的列表类型及python如何操作redis

Redis 非关 kv型

  • 数据类型
  • 列表
    • 常用命令
    • 应用场景
      • 练习
  • pyredis 操作redis
      • ubuntu
      • windows
    • 连接redis
    • 生产者消费者模型

数据类型

数据类型丰富,字符串strings,散列hashes,列表lists,集合sets,有序集合sorted sets等等

列表

在这里插入图片描述

单进程 单线程 尽可能规避掉阻塞的操作

常用命令

  1. LPUSH key value1 value2
    说明:从列表头部压入元素
    返回:list最新的长度

  2. RPUSH key value1 value2
    说明:从列表尾部压入元素
    返回:list最新的长度

  3. 查看列表中元素
    LRANGE key start stop

  4. 获取列表长度
    LLEN key

在这里插入图片描述
在这里插入图片描述

  1. RPOPLPUSH src dst
    说明:从列表srC尾部弹出1个元素,压入到列表dst的头部
    返回:被弹出的元素

  2. LINSERT key after|before value newvalue
    说明:在列表指定元素后/前插入元素
    返回:
    1,如果命令执行成功,返回列表的长度
    2,如果没有找到pivot,返回-1
    3,如果key不存在或为空列表,返回0

  3. 从列表头部弹出1个元素
    LPOP key

  4. 从列表尾部弹出1个元素6
    RPOP key

  5. 列表头部,阻塞弹出,列表为空时阻塞
    BLPOP key timeout

  6. 列表尾部,阻塞弹出,列表为空时阻塞
    BRPOP key timeout

在这里插入图片描述
在这里插入图片描述

关于BLPOP和BRPOP说明
1、如果弹出的列表不存在或者为空,就会阻塞
2、超时时间设置为0,就是永久阻塞,直到有数据可以弹出
3、如果多个客户端阻塞再同一个列表上,使用First In First Service原则,先到先服务

  1. LREM key count value
    说明:删除指定元素
    count:>0:表示从头部开始向表尾搜索,移除与value相等的元素,数量为count
    count<0:表示从尾部开始向表头搜索,移除与value相等的元素,数量为count
    count:=0:移除表中所有与value:相等的值

    返回:被移除元素的数量
    在这里插入图片描述

在这里插入图片描述

  1. LTRIM key start stop
    说明:保留指定范围内的元素
    返回:ok
    场景:
    保存微博评论最后500条 LTRIM weibo:comments 0 499

  2. LSET key index newvalue
    说明:设置Iist指定索引的值

应用场景

1,存储微博评论,做切割,只保留最新的x个
2,生产者消费者模型,做中间层,存放生产者的任务

练习

1、查看所有的键

keys *

2、向列表spider:urls中以RPUSH放入如下几个元素:01 baidu.com、
02 taobao.com,03 sina.com,04 jd.com 05 xxx.com

RPUSH spider:urls 01 baidu.com、
02 taobao.com,03 sina.com,04 jd.com 05 xxx.com

3、查看列表中所有元素

LRANGE spider:urls 0 -1

4、查看列表长度

LLEN spider:urls

5、将列表中01 baidu.com改为01 tmall…com

LSET 0 01 baidu.com 01 tmall…com

6、在列表中04jd.com之后再加1个元素02 taobao.com

LINSERT spider:urls after 04jd.com 02 taobao.com

7、弹出列表中的最后一个元素

RPOP spider:urls

8、删除列表中所有的02 taobao.com

LREM spider:urls 0 02_taobao.com

9、剔除列表中的其他元素,只剩前3条

LTRIM spider:urls 0 2

pyredis 操作redis

ubuntu

除用redis:客户端进行redis操作外,也可以使用Python直接操作redis
检查当前ubuntu是否安装
sudo pip3 freezelgrep -i ‘redis’
安装Python的redis 模块
sudo pip3 install redis

windows

前提是已经安装了redis

  • python安装相关包
    conda install redis
    我的是anconda环境

连接redis

在这里插入图片描述
在这里插入图片描述
返回字节串
[b’k3’,b’l1’,b’k2’,b’uuuname’,b’k1’,b’uuname’]在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

生产者消费者模型

producer.py

import redis
import jsonr = redis.Redis(host='',port=,db=,password=)
json_obj = {'task':'send_email','email_body':aaa','from''bbb','to''gxn'}json_str = json.dumps(json_obj)r.lpush('pyl2',json_str)

consumer.py

import redis
import jsonr = redis.Redis(host='',port=,db=,password=)while True:task = r.brpop('pyl2',10)print(task)if task:json_obj = json.loads(task[1])# 具体任务逻辑else:print('---no task---')break

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Redis】Redis客户端——Jedis(Java)
  • MATLAB 计算两点沿某个方向的间距(81)
  • MFC工控项目实例之六CFile添加菜单栏
  • 软件测试工程师必须了解的B/S架构及其测试要点
  • 8.3 数据库基础技术-关系代数
  • 加州大学圣地亚哥分校 沉浸式遥操作机器人系统
  • [GKCTF 2021]excel 骚操作1
  • shadertoy sdSegment 原理
  • 工厂现场多功能帮手,三防平板改善管理体验
  • 简化登录流程,助力应用建立用户体系
  • 计算机视觉概念科普
  • linux 安装kafaka单体服务
  • OD C卷 - Wonderland游乐园
  • 【第57课】SSRF服务端请求Gopher伪协议无回显利用黑白盒挖掘业务功能点
  • Maven的使用
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Git的一些常用操作
  • HTML中设置input等文本框为不可操作
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Laravel 菜鸟晋级之路
  • mac修复ab及siege安装
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • PaddlePaddle-GitHub的正确打开姿势
  • passportjs 源码分析
  • PAT A1017 优先队列
  • React系列之 Redux 架构模式
  • Travix是如何部署应用程序到Kubernetes上的
  • windows下如何用phpstorm同步测试服务器
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 大快搜索数据爬虫技术实例安装教学篇
  • 后端_ThinkPHP5
  • 技术胖1-4季视频复习— (看视频笔记)
  • 在Unity中实现一个简单的消息管理器
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (五)c52学习之旅-静态数码管
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)Linux下编译安装log4cxx
  • ******IT公司面试题汇总+优秀技术博客汇总
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • *上位机的定义
  • .describe() python_Python-Win32com-Excel
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [AIGC] SpringBoot的自动配置解析
  • [AIGC] 解题神器:Python中常用的高级数据结构