Redis数据类型和数据队列

news2024/9/22 23:36:57

一.Redis数据类型

参考资料:http://www.redis.cn/topics/data-types.html

相关命令参考: http://redisdoc.com/

Redis 是一种基于内存的开源数据结构存储系统,支持多种数据类型,每种数据类型都有自己特定的操作命令。

  1. String(字符串)

    特点:最基本的数据类型,可以存储字符串、整数或者浮点数。
    用途:常用于缓存、计数器、计分等场景。
  2. Hash(哈希)

    特点:存储了键值对集合,适合存储对象。
    用途:存储和获取对象的多个字段值,比如存储用户信息、商品信息等。
  3. List(列表)

    特点:链表结构,可以包含多个字符串元素,支持栈和队列操作。
    用途:适合用于消息队列、最近联系人列表、新闻流等场景。
  4. Set(集合)

    特点:存储字符串的无序集合,元素唯一。
    用途:适合做唯一值的存储,比如用户的标签、点赞用户列表等。
  5. Sorted Set(有序集合)

    特点:和集合类似,但每个元素都关联一个分数(score),可以根据分数进行排序。
    用途:适合做排行榜、范围查询等,比如积分排行榜、最热门文章等。

1.字符串string

字符串是所有编程语言中最常见的和最常用的数据类型,而且也是redis最基本的数据类型之一,而且redis 中所有的 key 的类型都是字符串。常用于保存 Session 信息场景,此数据类型比较常用

格式·:SETkeyvalue [EX seconds] [PX milliseconds] [NX|XX]时间复杂度: O(1)

将字符串值 value 关联到 key 

如果 key 已经持有其他值, SET 就覆写旧值,无视类型。
当 SET 命令对一个带有生存时间(TTL)的键进行设置之后,该键原有的 TTL 将被清除。

从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:
EX seconds :将键的过期时间设置为 seconds 秒。执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value 。

PX milliseconds :将键的过期时间设置为 milliseconds 毫秒。执行 SET key value PX 

milliseconds 的效果等同于执行 PSETEX key milliseconds value 。

NX :只在键不存在时,才对键进行设置操作。执行 SET key value NX 的效果等同于执行 SETNX key value 。
XX :只在键已经存在时,才对键进行设置操作。

示例:

1.判断类型 type

type
TYPE key1  #判断类型

2.设置自动过期 ex

ex
SET title ceo ex 3#设置自动过期时间3s OK

3.key不存在时设置,相当于添加  setnx

4.修改(key需要存在)  xx    相当于update

5.删除key    del

6.批量设置多个key   mset

   批量获取多个key   mget

7.追加数据   append

8.返回字符串key对应值的字节数   strlen

9.判断key是否存在

10.查看超时时间

ttl key #查看key的剩余生存时间,如果key过期后,会自动删除

  • -1#返回值表示永不过期,默认创建的key是永不过期,重新对key赋值,也会从有剩余生命周期变成永不过期

  • -2#返回值表示没有此key

  • num #key的剩余有效期

11.重新设置key的过期时间

EXPIRE   重新设置过期时间

PERSIST    永远不过期

127.0.0.1:6379> set name cxk ex 20  #建立一个key,过期时间为20秒
OK
127.0.0.1:6379> ttl name
(integer) 19
127.0.0.1:6379> expire name 1000  #重新设置过期时间为1000秒
(integer) 1
127.0.0.1:6379> ttl name
(integer) 998
127.0.0.1:6379> persist name  #永远不过期
(integer) 1
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> 

2.列表list

列表是一个双向可读写的管道,其头部是左侧,尾部是右侧,一个列表最多可以包含2^32-1(4294967295)个元素,下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,元素值可以重复,常用于存入日志等场景,此数据类型比较常用

  • 有序

  • 可重复

  • 左右都可以操作

生成列表并插入数据

命令解释 例子
lpush从左边添加数据 例子:lpush name zhou wu zheng wang
rpush从右边添加数据 例子: rpush car benz bmw
llen获取列表长度 例子: llen 列表名称
lindex获取单个元数 例子: lindex name 0 ; lindex name -1
lrange获取多个元素 例子: lrange name 0 3 第1个到第三个元素
lset修改列表元素 例子: lset name 2 feng 将name的第二个元素改为feng
lpop删除列表元素 例子: lpop name 删除左边第一个
rpop删除列表元素 例子: rpop name 删除右边第一个
ltrim对列表修剪, 例子: ltrim name 1 2 只留下编号为 1 2 的文件
del删除列表 例子:del name

LPUSH和RPUSH都可以插入列表

LPUSHkeyvalue [value …]
时间复杂度: O(1)
将一个或多个值 value 插入到列表 key 的表头

如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头:比如说,对空列表
mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。

如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。

RPUSH key value [value …]
时间复杂度: O(1)
将一个或多个值 value 插入到列表 key 的表尾(最右边)

如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、
RPUSH mylist b 、 RPUSH mylist c 。

如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。

示例:

新建列表

127.0.0.1:6379> lpush name zhou wang qiu sun
(integer) 4
127.0.0.1:6379> type name
list
127.0.0.1:6379> llen name
(integer) 4
127.0.0.1:6379> lrange name 0 -1
1) "sun"
2) "qiu"
3) "wang"
4) "zhou"
#数据是从右往左添加的,所以看到的是sun开始

#从左往右边加 数据
127.0.0.1:6379>  rpush name xu wu zheng han
(integer) 8
127.0.0.1:6379> lrange name 0 -1
1) "sun"
2) "qiu"
3) "wang"
4) "zhou"
5) "xu"
6) "wu"
7) "zheng"
8) "han"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1910939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

渲染农场怎么用更省钱?渲染100邀请码1a12

现在越来越多的设计师开始使用渲染农场,其中收费是个大问题,怎么用渲染农场才能更省钱呢?今天我们就来看下吧。 1、明确渲染方式 要根据不同情况选择合理的渲染方式,比如渲染农场就适合大场景渲染和紧急出图情况,其他…

跟我练习100道FPGA入门题目~(2/100)

难度指数:一颗星 关键词:组合逻辑、入门基础 点击此处直接答题:F学社-全球FPGA技术提升平台 (zzfpga.com) 提交代码就能看到波形图和电路图啦! (在社区加入群聊,更多学友等着和你探讨~)

主流电商平台营销中大数据的应用◆

随着经济的不断发展,网络信息技术不断加强,电子商务和大数据的蓬勃发展极大地方便了人们的生活。本文章主要阐述大数据分析与电商营销的含义、大数据分析在电子商务营销中的应用,以及该应用的作用和存在哪些不足及解决方法。探究大数据分析在…

年化15.73%:创业板指数布林带突破Backtrader策略(代码+数据)

原创文章第582篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 昨天咱们使用backtrader,重写了创业板动量趋势择时:年化19.2%:backtraderquantstats实现创业板动量择时(代码数据) 今天咱们换一个通道指标&#…

Labview_Note_4

1.字符串显示控件设置自动在最下边位置 字符串属性节点中→文本→滚动条位置 滚动框在滚动条中的位置。 如需设置该位置,可连线用于表示滚动行数的数值至该属性。LabVIEW在滚动条的最后一行显示连线至该属性的数值。如需滚动至文本的最后一行,可连线行…

Lab1 论文 MapReduce

目录 🌹前言 🦅2 Programming Model 🌼2.1 Example 🌼2.2 Types 🌼2.3 More Examples 🦅3 Implementation(实现) 🌼3.1 ~ 3.3 🌼3.4 ~ 3.6 🦅4 Refinemen…

OpenBayes 教程上新 | 清华大学强推!YOLOv10 实现更高效的目标检测

过去几年中,由于 YOLO 在计算成本和检测性能之间的有效平衡,它已经成为实时目标检测领域的主要范式。然而,YOLO 依赖于非极大值抑制 (NMS) 进行后处理,这阻碍了 YOLO 的端到端部署,并对推理延迟产生了不利影响。 YOLO…

C++第三弹 -- 类与对象(上)

目录 前言一. 面向过程和面向对象的初步认识二. 类的引入三. 类的定义1.定义2. 命名规则建议 四. 类的访问限定符以及封装1. 访问限定符2.面试题3. 封装 五. 类的作用域六. 类的实例化七. 类的对象大小的计算八. 类成员函数this指针1. this指针的引出2. this指针的特性3. C语言…

虚幻引擎在建筑和房地产中的五大颠覆性应用:探索新时代的优势

最初,虚幻引擎作为一个强大的游戏开发工具出现。它不断推动虚拟环境的可能性边界。正因如此,它的使用自然而然地超越了游戏开发,涵盖了包括建筑工程在内的其他行业。那么,在建筑和房地产领域使用虚幻引擎有哪些好处呢?…

Date TimePicker 时间选择器精确限制到时分秒,此刻按钮点击失效处理

今天在开发的时候遇到一个需求,日期时间选择器组件不能选择已经过去的年月日时分秒。用户只能选择当前时间的时间,如果年月日选择是当天之前的时间,时分秒不做限制,如果年月日选择的是当天时间,就要判断时分秒&#xf…

koa + http-proxy-middleware 搭建一个带转发的静态服务器

背景 由于工作中碰到写普通页面(未使用脚手架),需要发起接口请求,但普通页面又无法对接口发起正常请求,故编写一个Koa搭建的带转发功能的静态服务器。 起步 新建一个文件夹,在文件夹下打开 cmd 或者 git …

侯捷C++面向对象高级编程(上)-11-虚函数与多态

1.虚函数 2.virtual 3.继承+复合关系下的构造和析构 4.委托+继承

Java基础语法--基本数据类型

Java基础语法–基本数据类型 Java是一种静态类型语言,这意味着每个变量在使用前都必须声明其数据类型。Java提供了多种基本数据类型,用于存储整数、浮点数、字符和布尔值等。以下是Java中的基本数据类型及其特点: 1. 整型(Integ…

深入剖析预处理

目录 1.预定义符号 2.#define 定义常量 3.#define定义宏 4.带有副作用的宏参数 5.宏替换的规则 6.宏函数的对比 7.#和## 7.1 #运算符 7.2 ## 运算符 8.命名约定 9.#undef 10.命令行定义 11.条件编译 12.头文件的包含 12.1 头文件被包含的方式: 12.1…

C++ 语法习题(2)

第三讲 循环语句 1.偶数 编写一个程序&#xff0c;输出 1 到 100之间&#xff08;包括 1 和 100&#xff09;的全部偶数。 输入格式 无输入。 输出格式 输出全部偶数&#xff0c;每个偶数占一行。 输入样例 No input输出样例 2 4 6 ... 100 参考代码: #include <i…

玩具营销是如何拿捏成年人钱包?

好像现在的成年人逐渐热衷于偏向年轻化&#xff0c;问问题会好奇“尊嘟假嘟”&#xff0c;饭量上的“儿童套餐”&#xff0c;娃娃机前排长队......而最突出的莫过于各类各式的玩具不断收割当代年轻人&#xff0c;除去常给大朋友们小朋友们送去玩具福利的“麦、肯”双门&#xf…

数据分析中excel常用函数总结

1、相对引用&#xff0c;绝对引用和混合引用 相对引用&#xff1a;比如求和&#xff0c;当计算出一个求和值&#xff0c;其他的就可以向下填充&#xff0c;此时求和引用的行列会随着求和区域的行列变化而变化。 绝对引用&#xff1a; 对某一个引用区域进行锁定&#xff0c;让…

华为防火墙 拓扑搭建1

拓扑图 要求 1.DMZ区内的服务器&#xff0c;生产区仅能在办公时间内&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;可以访问&#xff0c;办公区设备全天可以访问 配置安全策略 设置办公时间 2.生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网…

【Mongodb-03】亿级数据从mysql迁移到mongodb辛酸历程

亿级数据从mysql迁移到mongodb辛酸历程 一&#xff0c;亿级数据从mysql迁移到mongodb辛酸历程1&#xff0c;核心业务和前期实现2&#xff0c;分库分表考虑3&#xff0c;nosql的选择4&#xff0c;mongodb服务器购买or自己搭建5&#xff0c;数据从mysq迁移到mongodb5.1&#xff0…

算法力扣刷题记录 三十八【二叉树的层次遍历应用一及二叉树构建】

前言 二叉树层序遍历应用题目。 记录三十八 【二叉树的层次遍历应用一】 继续。 一、【107.二叉树的层次遍历 II】 题目 给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向…