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,一经查实,立即删除!

相关文章

【产品经理】订单处理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所经历的…

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

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

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

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

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神经网络全称为自组织竞争…

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>…

rancher快照备份至S3

巧用rancher的S3快照备份功能,快速实现集群复制、集群转移、完全崩溃后的极限修复 1.进入集群管理,在对应的集群菜单后,点击编辑配置 2.选择ETCD,启用,Backup Snapshots to S3选项 并填入你的minio 3 配置成功后 手…

C# 信号量的使用

学习来源:《.net core 底层入门》 第六章第9节:信号量 案例:主线程负责添加数据,子线程负责获取数据 使用SemaphoreSlim(轻信号量)实现: using System; using System.Collections.Generic; us…

python中的<class ‘complex‘>

一般编程里面不怎么会讲&#xff0c;但是还是挺强大的一个类。 在 Python 中&#xff0c;<class complex> 表示复数类型。复数是一种包含实部和虚部的数学数&#xff0c;可以用 a bj 的形式表示&#xff0c;其中 a 表示实部&#xff0c;b 表示虚部&#xff0c;j 是虚数…

13 物理层介质及设备

物理层介质及设备 一、线缆的连接 &#xff08;一&#xff09;线序 ​ 线序&#xff1a; RJ-45连接头12345678568A绿白绿橙白蓝蓝白橙棕白棕568B橙白橙绿白蓝蓝白绿棕白棕 ​ 1、2发送&#xff0c;3、6接收 &#xff08;二&#xff09;线缆的应用 1.线缆的连接 ​ 标准…

Spring自定义标签体系和应用

我们知道&#xff0c;在使用Dubbo框架时&#xff0c;需要指定配置文件中的application、protocol、registry、provider、service等服务器端和客户端的配置项&#xff0c;典型的配置方法如下所示。通过这些配置项&#xff0c;我们可以基于Spring容器来启动Dubbo服务。 <!-- …

【2024.6.23】今日科技时事:科技前沿大事件

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

探索PHP中的函数

在PHP编程中&#xff0c;函数是一个非常重要的概念。函数可以帮助我们将代码组织成可重复使用的块&#xff0c;从而提高代码的可读性和可维护性。本文将介绍PHP中的函数&#xff0c;包括函数的定义、参数传递、返回值、内置函数和自定义函数等内容&#xff0c;帮助读者更好地理…

WPF 深入理解八、Binding 绑定

Binding 创建一个Demo 1 1.创建三个输入框&#xff0c;按钮 2.为按钮创建点击方法 3.点击按钮 三个输入框&#xff0c;分别更新了自己的内容。 上面的展示&#xff0c;是一个传统的模式&#xff0c;事件驱动程序&#xff0c;通过事件来变更UI控件元素的内容。 示例二 创建…

OS_虚拟机

2024.06.21&#xff1a;操作系统虚拟机学习笔记 第4节 虚拟机 4.1 虚拟机基本概念4.2 一型虚拟机管理程序4.3 二型虚拟机管理程序4.4 用户态与内核态 本节的主要内容就是来分辨两种不同的虚拟机管理程序 4.1 虚拟机基本概念 利用虚拟化技术&#xff0c;把一台物理机器虚拟成多…