Redis的常用数据类型以及命令

目录

一、概述

二、数据类型

三、String

四、Hash

五、List

六、Set

七、Sorted Set

八、通用命令

一、概述

Redis 是一个开源的、高性能的 键值对 数据库,支持多种数据类型,提供丰富的操作命令,常用于缓存、消息队列、排行榜等场景。了解 Redis 的数据类型及其对应的操作命令,有助于充分发挥 Redis 的性能优势,构建高效的应用程序。

​ 本文将记录一些常用的 Redis 数据结构以及命令,便于之后使用时进行查询。

二、数据类型

Redis 提供了以下五种基本数据类型:

  1. 字符串(String)
  2. 哈希(Hash)
  3. 列表(List)
  4. 集合(Set)
  5. 有序集合(Sorted Set)

此外,Redis 还提供了以下特殊数据类型:

  • 位图(Bitmap)
  • HyperLogLog
  • 地理位置(Geo)
  • 流(Stream)
  • JSON(通过 RedisJSON 模块)

三、String

1. 简介

  • 类型描述:字符串是 Redis 中最基本的数据类型,一个键对应一个值,值可以是字符串、数字、二进制数据等。
  • 应用场景:缓存对象、计数器、字符串操作等。

2. 常用命令

设置与获取值
  • SET key value [EX seconds] [PX milliseconds] [NX|XX]:设置指定键的值。

    示例:

    SET mykey "Hello, Redis!"
    SET mykey "Hello, Redis!" EX 60   # 设置过期时间为60秒
    SET mykey "Hello, Redis!" NX      # 仅当键不存在时设置
    
  • GET key:获取指定键的值。

    示例:

    GET mykey
    
批量操作
  • MSET key1 value1 key2 value2 ...:同时设置多个键的值。

    示例:

    MSET key1 "value1" key2 "value2"
    
  • MGET key1 key2 ...:同时获取多个键的值。

    示例:

    MGET key1 key2
    
计数器操作
  • INCR key:将键的值加 1。

    示例:

    INCR counter   # 如果键不存在,初始值为0,再加1
    
  • DECR key:将键的值减 1。

    示例:

    DECR counter
    
  • INCRBY key increment:将键的值增加指定的整数。

    示例:

    INCRBY counter 5
    
  • DECRBY key decrement:将键的值减少指定的整数。

    示例:

    DECRBY counter 3
    
字符串操作
  • APPEND key value:将指定的值追加到键的值末尾。

    示例:

    APPEND mykey " World!"
    
  • STRLEN key:获取键值的字符串长度。

    示例:

    STRLEN mykey
    

四、Hash

1. 简介

  • 类型描述:哈希是一个键值对集合,适合存储对象。键对应一个哈希表,哈希表内是字段(field)和值(value)的映射。
  • 应用场景:存储用户信息、商品信息等对象。

2. 常用命令

设置与获取字段值
  • HSET key field value [NX|XX]:设置哈希表中字段的值。

    示例:

    HSET user:1001 name "Alice"
    HSET user:1001 age 30
    HSET user:1001 phone 123456  # 仅当字段不存在时设置
    
  • HGET key field:获取哈希表中指定字段的值。

    示例:

    HGET user:1001 name
    
  • HMSET key field1 value1 field2 value2 ...:同时设置多个字段的值。

    示例:

    HMSET user:1002 name "Bob" age 25
    
  • HMGET key field1 field2 ...:同时获取多个字段的值。

    示例:

    HMGET user:1002 name age
    
  • HGETALL key:获取哈希表中所有的字段和值。

    示例:

    HGETALL user:1001
    
字段存在性与删除
  • HEXISTS key field:检查哈希表中是否存在指定字段。

    示例:

    HEXISTS user:1001 email
    
  • HDEL key field1 [field2 ...]:删除哈希表中的一个或多个字段。

    示例:

    HDEL user:1001 age
    
获取字段信息
  • HLEN key:获取哈希表中字段的数量。

    示例:

    HLEN user:1001
    
  • HKEYS key:获取哈希表中的所有字段名。

    示例:

    HKEYS user:1001
    
  • HVALS key:获取哈希表中的所有值。

    示例:

    HVALS user:1001
    
增加或减少数值字段
  • HINCRBY key field increment:将哈希表中指定字段的值增加指定整数。

    示例:

    HINCRBY user:1001 age 1
    

五、List

1. 简介

  • 类型描述:列表是一个有序的字符串链表,可以在头部或尾部添加和删除元素。
  • 应用场景:消息队列、任务列表、文章评论等。

2. 常用命令

元素添加
  • LPUSH key value1 [value2 ...]:将一个或多个值插入到列表头部。

    示例:

    LPUSH mylist "world"
    LPUSH mylist "hello"
    
  • RPUSH key value1 [value2 ...]:将一个或多个值插入到列表尾部。

    示例:

    RPUSH mylist "redis"
    
元素获取
  • LRANGE key start stop:获取列表中指定范围的元素。

    示例:

    LRANGE mylist 0 -1   # 获取所有元素
    
  • LINDEX key index:获取列表中指定索引的元素。

    示例:

    LINDEX mylist 0      # 获取第一个元素
    
元素删除
  • LPOP key:移除并返回列表的头元素。

    示例:

    LPOP mylist
    
  • RPOP key:移除并返回列表的尾元素。

    示例:

    RPOP mylist
    
列表长度
  • LLEN key:获取列表的长度。

    示例:

    LLEN mylist
    
指定位置插入
  • LINSERT key BEFORE|AFTER pivot value:在列表的指定元素前或后插入元素。

    示例:

    LINSERT mylist BEFORE "world" "there"
    
修剪列表
  • LTRIM key start stop:对列表进行修剪,只保留指定范围的元素。

    示例:

    LTRIM mylist 0 2
    

六、Set

1. 简介

  • 类型描述:集合是一个无序的、唯一的字符串集合。
  • 应用场景:标签、好友关系、去重操作等。

2. 常用命令

添加与获取成员
  • SADD key member1 [member2 ...]:向集合添加一个或多个成员。

    示例:

    SADD myset "apple" "banana" "cherry"
    
  • SMEMBERS key:获取集合中的所有成员。

    示例:

    SMEMBERS myset
    
删除成员
  • SREM key member1 [member2 ...]:移除集合中的一个或多个成员。

    示例:

    SREM myset "banana"
    
成员存在性
  • SISMEMBER key member:判断成员是否存在于集合中。

    示例:

    SISMEMBER myset "apple"
    
集合运算
  • SINTER key1 [key2 ...]:返回给定所有集合的交集。

    示例:

    SINTER set1 set2
    
  • SUNION key1 [key2 ...]:返回所有给定集合的并集。

    示例:

    SUNION set1 set2
    
  • SDIFF key1 [key2 ...]:返回第一个集合与其他集合的差集。

    示例:

    SDIFF set1 set2
    
随机获取和删除成员
  • SRANDMEMBER key [count]:随机返回集合中的一个或多个成员。

    示例:

    SRANDMEMBER myset
    SRANDMEMBER myset 2
    
  • SPOP key [count]:随机移除并返回集合中的一个或多个成员。

    示例:

    SPOP myset
    SPOP myset 2
    

七、Sorted Set

1. 简介

  • 类型描述:有序集合与集合类似,但每个成员都会关联一个分数(score),集合中的成员是 唯一 的,但分数可以重复。成员按分数从小到大排序。
  • 应用场景:排行榜、带权重的消息队列等。

2. 常用命令

添加与获取成员
  • ZADD key [NX|XX] [CH] [INCR] score member [score member ...]:向有序集合添加一个或多个成员,或更新已存在成员的分数。

    示例:

    ZADD myzset 1 "one" 2 "two" 3 "three"
    
  • ZRANGE key start stop [WITHSCORES]:按照分数从小到大,返回指定区间内的成员。

    示例:

    ZRANGE myzset 0 -1    # 获取所有成员
    ZRANGE myzset 0 -1 WITHSCORES   # 同时返回分数
    
  • ZREVRANGE key start stop [WITHSCORES]:按照分数从大到小,返回指定区间内的成员。

    示例:

    ZREVRANGE myzset 0 -1
    
获取成员分数和排名
  • ZSCORE key member:获取指定成员的分数。

    示例:

    ZSCORE myzset "one"
    
  • ZRANK key member:获取指定成员的排名(从 0 开始),按分数从小到大。

    示例:

    ZRANK myzset "two"
    
  • ZREVRANK key member:获取指定成员的排名,按分数从大到小。

    示例:

    ZREVRANK myzset "two"
    
删除成员
  • ZREM key member [member ...]:移除一个或多个成员。

    示例:

    ZREM myzset "two"
    
按分数或排名范围获取成员
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]:返回指定分数范围内的成员。

    示例:

    ZRANGEBYSCORE myzset 1 2
    
  • ZCOUNT key min max:返回指定分数范围内的成员数量。

    示例:

    ZCOUNT myzset 1 2
    

八、通用命令

键操作命令

查找键
  • KEYS pattern:查找所有符合给定模式的键。

    • 示例:

      KEYS user:*
      

      注意KEYS 命令在键数量较多时可能会阻塞服务器,生产环境中应避免使用。

键的存在性和删除
  • EXISTS key:检查给定键是否存在。

    • 示例:

      EXISTS mykey
      
  • DEL key [key ...]:删除一个或多个键。

    • 示例:

      DEL key1 key2
      
键的过期和持久化
  • EXPIRE key seconds:为给定键设置过期时间(秒)。

    • 示例:

      EXPIRE mykey 60
      
  • TTL key:获取键的剩余生存时间(秒)。

    • 示例:

      TTL mykey
      
  • PERSIST key:移除键的过期时间,使其永久存在。

    • 示例:

      PERSIST mykey
      
键的类型和重命名
  • TYPE key:返回键所存储的值的类型。

    • 示例:

      TYPE mykey
      
  • RENAME key newkey:重命名键。

    • 示例:

      RENAME oldkey newkey
      
其他键操作
  • RANDOMKEY:随机返回一个键。

    • 示例:

      RANDOMKEY
      
  • DBSIZE:返回当前数据库的键的数量。

    • 示例:

      DBSIZE
      

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

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

相关文章

算法: 链表题目练习

文章目录 链表题目练习两数相加两两交换链表中的节点重排链表合并 K 个升序链表K 个一组翻转链表 总结 链表题目练习 两数相加 坑: 两个链表都遍历完后,可能需要进位. class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode cur1 l1;ListNode…

js WebAPI黑马笔记(万字速通)

此笔记来自于黑马程序员,pink老师yyds 复习: splice() 方法用于添加或删除数组中的元素。 注意: 这种方法会改变原始数组。 删除数组: splice(起始位置, 删除的个数) 比如:1 let arr [red, green, b…

【Pikachu靶场:XSS系列】xss之过滤,xss之htmlspecialchars,xss之herf输出,xss之js输出通关啦

一、xss之过滤 <svg onloadalert("过关啦")> 二、xss之htmlspecialchars javascript:alert(123) 原理&#xff1a;输入测试文本为herf的属性值和内容值&#xff0c;所以转换思路直接变为js代码OK了 三、xss之href输出 JavaScript:alert(假客套) 原理&#x…

JS装备智能化储备管理体系优化改革

现代化的JS仓储管理方案&#xff0c;通过整合先进的RFID技术与三维模拟技术&#xff0c;为JS物流领域开创了新颖的改革浪潮。以下是对这两项尖端技术融合并用于战备物资管理的应用概述&#xff1a; 一、RFID技术在JS物资管理中的实践 RFID技术依靠无线电波实现无需直接接触的数…

缓存淘汰策略:Redis中的内存管理艺术

在现代应用架构中&#xff0c;缓存是提升性能的关键组件。 Redis&#xff0c;作为一个高性能的键值存储系统&#xff0c;因其快速的数据访问能力而被广泛使用。然而&#xff0c;由于物理内存的限制&#xff0c;Redis必须在存储空间和性能之间找到平衡&#xff0c;这就引出了缓…

AUTOSAR COM 与 LargeDataCOM 模块解析及 C++ 实现示例

AUTOSAR COM 和 LargeDataCOM 模块在功能和使用场景上有一些显著的区别。以下是它们的主要区别及具体的应用示例,最后用 C++ 源代码来解析说明。 AUTOSAR COM 模块 • 功能:主要用于处理标准大小的信号和 I-PDU(协议数据单元),提供了信号打包、解包、数据传输和接收等功能…

JavaWeb复习

在网络应用程序中有两种基本的结构&#xff0c;即C/S和B/S&#xff0c;对于c/s程序分为客户机和服务器两层&#xff0c;把应用软件按照在客户机端(通常由客户端维护困难)&#xff0c;通过网络与服务器进行相互通信。B/S结构却不用通知客户端安装某个软件&#xff0c;内容修改了…

qt获取本机IP和定位

前言&#xff1a; 在写一个天气预报模块时&#xff0c;需要一个定位功能&#xff0c;在网上翻来翻去才找着&#xff0c;放在这里留着回顾下&#xff0c;也帮下有需要的人 正文&#xff1a; 一开始我想着直接调用百度地图的API来定位&#xff0c; 然后我就想先获取本机IP的方…

python爬取旅游攻略(1)

参考网址&#xff1a; https://blog.csdn.net/m0_61981943/article/details/131262987 导入相关库&#xff0c;用get请求方式请求网页方式&#xff1a; import requests import parsel import csv import time import random url fhttps://travel.qunar.com/travelbook/list.…

Oracle OCP认证考试考点详解082系列12

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 56. 第56题&#xff1a; 题目 解析及答案&#xff1a; 关于企业管理器&#xff08;EM&#xff09;Express&#xff0c;以下哪两个陈述是…

Postgresql源码(137)执行器参数传递与使用

参考 《Postgresql源码&#xff08;127&#xff09;投影ExecProject的表达式执行分析》 0 总结速查 prepare p_04(int,int) as select b from tbl_01 where a $1 and b $2为例。 custom计划中&#xff0c;在表达式计算中使用参数的值&#xff0c;因为custom计划会带参数值&…

SPI通信详解-学习笔记

参考原文地址 SPI&#xff1a;高速、全双工&#xff0c;同步、通信总线 SPI主从模式 SPI分为主、从两种模式&#xff0c;一个SPI通讯系统需要包含一个&#xff08;且只能是一个&#xff09;主设备&#xff0c;一个或多个从设备。提供时钟的为主设备&#xff08;Master&#xff…

Day102漏洞发现-漏扫项目篇Poc开发Yaml语法插件一键生成匹配结果交互提取

知识点&#xff1a; 1、Nuclei-Poc开发-环境配置&编写流程 2、Nuclei-Poc开发-Yaml语法&匹配提取 3、Nuclei-Poc开发-BurpSuite一键生成插件 Nuclei-Poc开发-环境配置&编写流程 1、开发环境&#xff1a;VscodeYaml插件 Visual Studio Code - Code Editing. R…

Node.js 入门指南:从零开始构建全栈应用

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;node.js篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:node.js-入门指南&#xff1a;从零开始构建全栈应用 前言 大家好&#xff0c;我是青山。作…

WordPress网站添加嵌入B站视频,自适应屏幕大小,取消自动播放

结合bv号 改成以下嵌入式代码&#xff08;自适应屏幕大小,取消自动播放&#xff09; <iframe style"width: 100%; aspect-ratio: 16/9;" src"//player.bilibili.com/player.html?isOutsidetrue&bvidBV13CSVYREpr&p1&autoplay0" scrolling…

大模型应用系列:Query 变换的示例浅析

【引】NLP中的经典组件在大模型应用中还有效么&#xff1f;大模型对自然语言处理中的典型任务有什么影响么&#xff1f; RAG应用通过分割文档、嵌入向量化并检索高语义相似性的块来响应用户问题&#xff0c;但面临文档块不相关、用户用词不当及结构化查询需求等问题。若RAG无法…

【Oracle】空格单字符通配符查询匹配失败

问题 在进行模糊查询的时候&#xff0c;通过全局任意字符串匹配出含有两个字刘姓的人&#xff0c;但是通过刘_不能匹配出结果。 解决 检查后发现&#xff0c;姓名中包含空格 SELECT * FROM student WHERE TRIM(sname) LIKE 刘_;第一种解决方案就是查询的时候进行去空格处理&a…

讲讲⾼并发的原则?

大家好&#xff0c;我是锋哥。今天分享关于【讲讲⾼并发的原则&#xff1f;】面试题。希望对大家有帮助&#xff1b; 讲讲⾼并发的原则&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 高并发是指系统在同一时间内能够处理大量请求的能力。要有效地管理…

鸿蒙进阶-AlphabetIndexer组件

大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习AlphabetIndexer组件&#xff0c;喜欢就点点关注吧&#xff01; 通过 AlphabetIndexer 组件可以与容器组件结合&#xff0c;实现导航联动&#xff0c;以及快速定位的效果 核心用法 AlphabetIndexer不是容器组件…

ubuntu交叉编译expat库给arm平台使用

1.下载expat库源码: https://github.com/libexpat/libexpat/release?page=2 wget https://github.com/libexpat/libexpat/release/download/R_2_3_0/expat-2.3.0.tar.bz2 下载成功: 2.解压expat库,并进入解压后的目录: tar xjf expat-2.3.0.tar.bz2 cd expat-2.3.0 <…