Redis数据库(二):Redis数据库的五种基本数据类型

        Redis 是一个开源的内存数据库,支持多种数据结构,常用于缓存、会话管理、实时分析等场景。Redis 提供了五种基本的数据类型:字符串、 列表、 集合、 散列/哈希、 有序集合。这篇博客,我们来详细介绍这五种数据类型,并且如何使用它们。

目录

一、字符串

1.1 设置值和获取值

1.2 判断key是否存在

1.3 追加字符串和获取字符串的长度

1.4 对value进行自增1和自减1操作

1.5 设置加减的步长

1.6 获取字符串某一段的内容/修改字符串某一段的内容

1.7 设置过期时间,查看剩余时间

1.8 同时设置或者获取多个值

1.9 先获取值,在设置值

1.10 总结

二、列表

2.1 从列表list的左边/右边插入值

2.2 获取指定范围的值

2.3 从列表list的左边/右边移除值

2.4 获取指定下标的值

2.5 获取列表中的元素个数

2.6 移除列表中的元素

2.7 将列表1的最后一个元素移动到列表2中

2.8 修改对应下标的列表中的值

2.9 在列表中的任意指定值的前后位置插入值

2.10 小结

三、集合

3.1 往集合中添加值

3.2 获取集合中的所有值

3.3 判断某个值是否在集合中

3.4 获取set中元素的个数

3.5 删除集合中的值

3.6 从集合中获取随机值

3.7 随机删除指定个数的元素

3.8 将指定的元素从一个集合移动到另一个集合中

四、哈希

4.1 设置或者获取一个hash的值

4.2  设置或者获取多个hash的值

4.3 获取hash中的所有值

4.4 删除指定field的hash键值对

4.5 获取hash的键值对的个数

4.6 判断hash中的字段是否存在

4.7 获取hash中所有的字段或者值

4.8 给hash中指定字段的值加上一个增量

4.9 添加一个哈希值

4.10 小结

五、有序集合

5.1 向有序集合添加一个或多个成员

5.2 获取zset中一个范围的值

5.3 移除zset中指定的元素

5.4 查看zset中的元素个数


一、字符串

         Redis 中最简单和最常用的数据类型。可以存储任何类型的数据,例如字符串、整数、浮点数等。

1.1 设置值和获取值

格式:

  1. 设置值: set key value       
  2. 获取值: get key

1.2 判断key是否存在

格式: exists key

1.3 追加字符串和获取字符串的长度

  1. key存在,直接在后面追加字符串,如果key不存在,相当于set命令,格式: append key value
  2. 获取字符串的长度,格式: strlen key

1.4 对value进行自增1和自减1操作

  1. 对value进行自增1操作(数值类型),格式: incr key 
  2. 对value进行自减1操作(数值类型),格式: decr key

1.5 设置加减的步长

  1. 设置加的步长,格式: incrby key num
  2. 设置减的步长,格式: decrby key num

1.6 获取字符串某一段的内容/修改字符串某一段的内容

  1. 获取字符串某一段的内容:getrange key start end  ,start和end是起始位置和结束位置,从0开始。
  2. 从指定位置开始替换字符串的值,格式: setrange key offset value,offset是起始位置计算的偏移量,value是要修改的值。

1.7 设置过期时间,查看剩余时间

  1. 设置过期时间,格式: setex key seconds value ,以秒为单位
  2. 查看剩余时间,格式:  ttl key

1.8 同时设置或者获取多个值

  1. 同时设置多个值,格式: mset key1 value1 key2 value2 ...
  2. 同时获取多个值,格式:mget key1 key2...

1.9 先获取值,在设置值

先获取值,在设置值,格式: getset key value

1.10 总结

String类似的使用场景:value除了是字符串也可以是数字!

  1. 计数器
  2. 统计多单位的数量
  3. 对象缓存存储

二、列表

         它本质上是有序的字符串列表,类似于链表。可以在列表的两端进行推入和弹出操作。在Redis中,我们可以用list完成栈、队列、阻塞队列 ,所有的list命令都是用l开头的。

2.1 从列表list的左边/右边插入值

  1. 从list的左边插入值,格式: lpush key value
  2. 从list的右边插入值,格式: rpush key value

2.2 获取指定范围的值

lrange获取指定范围的值,格式: lrange key start stop

2.3 从列表list的左边/右边移除值

  1. 从列表的左边移除值,格式: lpop key 
  2. 从列表的右边移除值,格式: rpop key

2.4 获取指定下标的值

获取指定下标的值,格式: lindex key index

2.5 获取列表中的元素个数

获取列表中的元素个数,格式: llen key

2.6 移除列表中的元素

移除列表中count次指定元素,格式: lrem key count value

2.7 将列表1的最后一个元素移动到列表2中

移除列表中最后一个元素,将它添加到另一个列表中,格式: rpoplpush key1 key2

2.8 修改对应下标的列表中的值

根据下标替换列表中的值,格式: lset key index value

2.9 在列表中的任意指定值的前后位置插入值

将某个具体的value插入到列表中某个值的前面或后面,格式: linsert key before|after value new_value

2.10 小结

  1. 他实际上是一个链表,before or after, left,right都可以插入值
  2. 如果key不存在,创建新的链表,如果key存在,新增内容
  3. 如果移除了所有的值,空链表,也代表不存在
  4. 在两遍插入或者改动值,效率最高!
  5. 中间元素,相对来说效率会低一点
  6. 队列: LPOP RPUSH  栈: LPOP LPUSH

三、集合

      无序的字符串集合,集合中的值是不能重复的。提供类似数学集合操作的命令,如交集、并集、差集等

3.1 往集合中添加值

给集合中添加值,格式: sadd key value1 value2 ...

3.2 获取集合中的所有值

获取集合中的所有值,格式: smembers key

3.3 判断某个值是否在集合中

判断某个值是否在集合中,格式: sismember key value

3.4 获取set中元素的个数

获取集合中元素的个数,格式: scard key

3.5 删除集合中的值

删除集合中的值,格式: srem key value1 value2....

3.6 从集合中获取随机值

从集合中获取随机值,格式: srandmember key count

3.7 随机删除指定个数的元素

随机删除指定个数个元素,格式: spop key count

3.8 将指定的元素从一个集合移动到另一个集合中

将指定的元素从一个集合中移动到另一个集合中,格式: smove set1 set2 value

四、哈希

       Redis 中的哈希(Hash)是一种用于存储键值对集合的数据结构。它类似于编程语言中的哈希表或字典。哈希在 Redis 中非常有用,特别适合存储对象,例如用户信息(ID、姓名、年龄等)。可以将哈希看成是一个Map集合,key-value中的value是一个map集合。

  • 字段(Field):哈希中的每个子键,类似于对象的属性名。
  • 值(Value):与字段相关联的数据,类似于对象的属性值。

4.1 设置或者获取一个hash的值

  1. 设置一个hash的值,格式:hset key field1 value1
  2. 获取一个hash的值,格式:hget key field

4.2  设置或者获取多个hash的值

  1. 设置多个hash的值,格式: hmset key field1 value1 field2 value2 ...
  2. 获取多个hash的值,格式:hmget key field1 field2...

4.3 获取hash中的所有值

       hgetall  key

4.4 删除指定field的hash键值对

删除指定field的hash键值对,格式: hdel key field

4.5 获取hash的键值对的个数

获取hash的键值对的个数,格式: hlen key

4.6 判断hash中的字段是否存在

判断hash中的字段是否存在,格式: hexists key field

4.7 获取hash中所有的字段或者值

  1. 获取hash中所有的字段,格式: hkeys key
  2. 获取hash中所有的值,格式:  hvals key

4.8 给hash中指定字段的值加上一个增量

        hincrby  key 增量

4.9 添加一个哈希值

如果不存在,则添加,如果存在,则失败,格式: hsetnx key field value

4.10 小结

hash的应用

  1. hash中存储经常变更的值:比如用户信息: user : name-value,age-value,sex-value
  2. hash更适合对象的存储,String更加适合字符串存储

五、有序集合

        Redis 中的有序集合(Sorted Set)是一种将集合的元素与一个浮点数分数(score)关联的数据结构。与普通集合(Set)不同,有序集合中的元素是有序的,顺序是由分数决定的。它在需要维护数据顺序并支持范围查询的场景中非常有用。

5.1 向有序集合添加一个或多个成员

添加一个值,格式: zadd key scores value

5.2 获取zset中一个范围的值

获取zset中一个范围的值,格式: zrange key start stop

5.3 移除zset中指定的元素

移除zset中指定的元素,格式: zrem key value

5.4 查看zset中的元素个数

查看zset中的元素个数,格式: zcard key

       至此,Redis数据库第二节就介绍完毕,都是一些简单的操作,熟练即可,没有什么难度,更多精彩内容见后期博客!感谢阅读,如果喜欢,点赞加关注!

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

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

相关文章

【Flink metric(2)】chunjun的metric系统是怎么设计的:如何注册metric、如何同步metric

文章目录 一. 管理(注册、同步)metric1. BaseRichInputFormat对metric的管理2. 通过BaseMetric管理metric 二. AccumulatorCollector:metric同步1. 启动线程池,周期性更新metric信息2. 获取全局指标、本地指标3. 资源回收 三. 小结…

【产品经理】订单处理8-智能分仓

在电商ERP系统中,通常智能分仓策略是系统中最重要的功能之一,大公司若仓库较多时,智能分仓策略中也会加入大数据团队,通过算法来计算最优仓库。 本次讲解的智能分仓适用于中小公司,适合拥有2个以上10个以下仓库的公司…

AGI 之 【Hugging Face】 的[ 简单介绍 ] [ 基础环境搭建 ] 的简单整理

AGI 之 【Hugging Face】 的[ 简单介绍 ] [ 基础环境搭建 ] 的简单整理 目录 AGI 之 【Hugging Face】 的[ 简单介绍 ] [ 基础环境搭建 ] 的简单整理 一、简单介绍 二、Hugging Face 三、环境搭建 python 环境的搭建 Pycharm 环境搭建 1、下载 Pycharm 安装包 2、安装 …

装机必备一WinRAR安装使用以及常见问题

WinRAR是一款功能强大的压缩包管理器,支持多种压缩格式,如RAR、ZIP等。作为一款经典且广泛使用的压缩软件,WinRAR不仅在文件压缩率和速度方面表现出色,还提供了备份数据、缩减电子邮件附件大小以及解压缩网络下载文件等功能。 为…

数据结构与算法:回溯算法约束条件:剪枝详解、示例(C#、C++)与回溯典型例题详解

文章目录 一、约束条件二、剪枝三、典型例题四、常用术语五、示例N 皇后问题 C# 示例N 皇后问题 C 示例 六、常见用用回溯算法解决的问题汇总组合问题:图论问题:棋盘游戏问题:优化问题:调度问题:其他问题: …

How to persist LangChain conversation memory (save and load)

题意:如何持久化 LangChain 对话记忆(保存和加载) 问题背景: Im creating a conversation like so: 我正在创建一个对话,如下所示: llm ChatOpenAI(temperature0, openai_api_keyOPENAI_API_KEY,…

【CTF】BUU BURP COURSE 11

打开靶机之后,显示只能在本地打开(一度以为靶机出问题)。 解题步骤: 1.分析请求包信息 2.构建本地请求IP X-Real-IP:记录真实客户端IP地址信息; X-Forward-for:记录了请求IP到目标ip所经历的…

新型基坑气膜:施工开挖的得力干将—轻空间

随着城市建设的加速推进,施工过程中的环境问题日益受到关注。新型基坑气膜以其卓越的防尘、降噪、节能和防火功能,成为施工开挖领域中的得力干将,极大地提升了绿色施工的水平。 基坑气膜的作用 基坑气膜在施工现场形成了一个完全封闭的作业空…

Java EE之Servlet

Servlet 是 Java EE(Java Platform, Enterprise Edition)规范中的一个技术,是服务器端 Java 程序,用于处理客户端请求并生成动态响应。Servlet 通常用于构建 Web 应用程序,并与 HTTP 协议紧密集成。以下是对 Servlet 的…

JavaWeb系列七: 动态WEB开发核心(Servlet) 下

韩老师学生 ServletConfigServletContext网站计数器 HttpServletRequest细节1细节2细节3 Dispathcer请求转发应用实例请求转发细节和注意事项习题 HttpServletResponse请求重定向请求重定向注意事项动态获取到application context练习题 ServletConfig ●ServletConfig基本介绍…

docker --restart 容器重启策略

官网连接:https://docs.docker.com/config/containers/start-containers-automatically/ 当容器退出后,或者docker程序重启了,容器是否要重启,可以用重启策略控制。 用docker run命令的时候,用--restart 设置容器重启…

1.文件上传漏洞渗透及防御(OWASP实战训练)

1.文件上传漏洞渗透及防御(OWASP实战训练) OWASPupload上传漏洞实验一:低安全模式下,上传任意类型的文件,文件大小不受限制实验二,安全级别调整将其变为中等安全级别实验三:将其设为高安全级别 …

【教程】如何一步一步训练一个SOM神经网络-自组织竞争神经网络(Self-organizing Feature Map)

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、什么是SOM神经网络1.1.SOM神经网络有什么用1.2.SOM神经网络是如何聚类的 二、如何训练一个SOM神经网络2.1. 训练一个SOM神经网络的代码示例2.2. 如何查看SOM神经网络的聚类中心 SOM神经网络全称为自组织竞争…

《系统架构设计师教程(第2版)》第11章-未来信息综合技术-05-数字孪生体(Digital Twin)技术概述

文章目录 1. 数字孪生体发展历程1.2 准备期1.2 概念产生期1.3 领先应用期1.4 深度开发和大规模扩展应用期 2. 数字孪生体的定义3. 数字孪生体的关键技术3.1 建模3.2 仿真技术3.3 其他技术 4. 数字孪生体的应用4.1 制造领域4.2 全产业链上的应用4.3 城市4.4 战场 1. 数字孪生体发…

解决Java中的NoSuchAlgorithmException异常的技术实践

解决Java中的NoSuchAlgorithmException异常的技术实践 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Java编程中,NoSuchAlgorithmException异常…

Redis-主从复制-测试主从模式下的读写操作

文章目录 1、在主机6379写入数据2、在从机6380上写数据报错3、从机只能读数据,不能写数据 1、在主机6379写入数据 127.0.0.1:6379> keys * (empty array) 127.0.0.1:6379> set uname jim OK 127.0.0.1:6379> get uname "jim" 127.0.0.1:6379>…

【机器学习】python之人工智能应用篇——3D生成技术

在Python中,人工智能(AI)与3D生成技术的结合可以体现在多个方面,比如使用AI算法来优化3D模型的生成、通过机器学习来预测3D模型的属性,或者利用深度学习来生成全新的3D内容。然而,直接通过AI生成完整的3D模…

单片机IO口模拟串口实现原理

参考链接 1、使用GPIO来模拟UART 2、STM32之IO模拟串口篇 1、工作原理 单片机IO口模拟串口的实现原理通常是通过软件来模拟串行通信的传输和接收。下面说明了单片机IO口模拟串口的实现原理: 配置IO口:选择两个IO口作为模拟串口的发送和接收引脚。通常…

go语言:数据库sql查询保存任意数量字段的数据

1、查询任意列数的表,并输出 func search() {rows, _ : db.Query("select * from users") // 查询数据columns, _ : rows.Columns() // 查询到的字段名列表values : make([]any, len(columns)) // 根据字段数量,创建接收…

优雅的参数校验——Guava库中的Preconditions

Guava库中的Preconditions类提供了一些静态方法,用于在程序中执行参数的检查和验证。这些方法在编写健壮和可维护的代码时非常有用 checkArgument(boolean expression): 作用:用于验证方法的参数是否满足某个条件。如果条件不满足&#xff0c…