Redis从入门再到入门(中)

news2024/9/24 19:20:27

文章目录

    • 1.Redis的数据类型
      • 1.1 Redis的5中数据类型
      • 1.2 字符串类型String
      • 1.3 哈希类型hash
      • 1.4 列表类型list
      • 1.5 集合类型set
      • 1.6 有序集合类型sortset
    • 2.Redis的通用命令

1.Redis的数据类型

1.1 Redis的5中数据类型

redis是一种高级的key-value的存储系统,其中value支持五种数据类型:

  • 字符串(String)
  • 哈希(hash)
  • 字符串列表(list)
  • 字符串集合(set)
  • 有序字符串集合(sorted set)

关于key的定义,注意如下几点:

  • key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找效率
  • key不要太短,如果太短会降低key的可读性
  • 在项目中,key一般有一个统一的命名规范

1.2 字符串类型String

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型存入
和获取的数据相同。在Redis中字符串类型的Value最多可以容纳的数据长度是512M

image-20240830131007519

set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回"OK"

get key: 获取key的value。如果该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返回(nil)

127.0.0.1:6379> set name Satellite
OK
127.0.0.1:6379> get name
"Satellite"
127.0.0.1:6379> set name Satellite2426
OK
127.0.0.1:6379> get name
"Satellite2426"
127.0.0.1:6379> get gender
(nil)

del key:删除指定key

127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set name satellite
OK
127.0.0.1:6379> set gender female
OK
127.0.0.1:6379> del name gender
(integer) 2
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> get gender
(nil)

setnx key value:执行set操作。如果key不存在设置key和value,并返回1;如果key存在不会覆盖,返回0

127.0.0.1:6379> setnx age 20
(integer) 1
127.0.0.1:6379> setnx age 30
(integer) 0
127.0.0.1:6379> get age
"20"

1.3 哈希类型hash

Redis中的Hash类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

image-20240830133750131

hset key filed value [filed value...]:为指定的key设定filed/value对(键值对)。其中key代表途中的key;filed代表途中的key1、key2…;value代表途中的value1、value2…

hget key filed:返回指定的key中的filed的值

127.0.0.1:6379> hset user:1 name tom age 13
(integer) 2
127.0.0.1:6379> hget user:1 name
"tom"
127.0.0.1:6379> hget user:1 age
"13"

hgetall key:可以获取该键的所有数据

127.0.0.1:6379> hgetall user:1
1) "name"
2) "tom"
3) "age"
4) "13"

hdel key filed [filed ...]:可以删除一个或多个字段,返回值是被删除的字段个数

127.0.0.1:6379> hdel user:1 age
(integer) 1
127.0.0.1:6379> hgetall user:1
1) "name"
2) "tom"

1.4 列表类型list

在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295

image-20240830134949216

lpush key value [value1 value2 ...]:在指定的key所关联的list的头部(左侧)插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回当前元素的个数

lrange key startIndex endIndex:Redis lrange返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素…0表示第一个元素以此类推

127.0.0.1:6379> lpush mylist a b c
(integer) 3
127.0.0.1:6379> lrange mylist 0 2
1) "c"
2) "b"
3) "a"

rpush key values [value1 value2 ...]:在指定的key所关联的list的尾部(右侧)插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数

127.0.0.1:6379> rpush mylist d
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "c"
2) "b"
3) "a"
4) "d"

lpop key:返回并删除指定的key关联的最左侧元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素

rpop key:返回并删除指定的key关联的链表中的最右侧元素,即尾部元素。如果该key不存在,返回nil;若key存在,则返回链表的尾部元素

127.0.0.1:6379> lpop mylist
"c"
127.0.0.1:6379> lrange mylist 0 -1
1) "b"
2) "a"
3) "d"
127.0.0.1:6379> rpop mylist
"d"
127.0.0.1:6379> lrange mylist 0 -1
1) "b"
2) "a"

1.5 集合类型set

在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。和List类型不同的是,Set集合中不允许出现重复的元素

image-20240830143315004

sadd key values [value1 value2 ...]:像set中添加数据,如果该key的值已有则不会重复添加

smembers key:获取set中所有的成员

srem key members[member1 member2 ...]:删除set中指定的成员

127.0.0.1:6379> sadd myset zhangsan lisi zhangsan
(integer) 2
127.0.0.1:6379> SMEMBERS myset
1) "lisi"
2) "zhangsan"
127.0.0.1:6379> srem myset lisi
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "zhangsan"

1.6 有序集合类型sortset

有序集合,元素为string类型,元素具有唯一性,每个元素都会关联一个double(双精度)类型的score,表示权重(手动关联),通过权重将元素从左到右排序

zadd key score member [score member ...]:像sortset中添加成员,每个成员都对应一个权重(分数)

127.0.0.1:6379> zadd myzset 3 zhangsan 2 lisi 5 satellite
(integer) 3

zrange key startIndex endIndex [withscores]:通过索引区间返回有序集合中指定区间内的成员

127.0.0.1:6379> zrange myzset 0 -1
1) "lisi"
2) "zhangsan"
3) "satellite"
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "lisi"
2) "2"
3) "zhangsan"
4) "3"
5) "satellite"
6) "5"

zrevrange key start stop [withscores]:根据权重逆序输出

127.0.0.1:6379> zrevrange myzset 0 -1
1) "satellite"
2) "zhangsan"
3) "lisi"
127.0.0.1:6379> zrevrange myzset 0 -1 withscores
1) "satellite"
2) "5"
3) "zhangsan"
4) "3"
5) "lisi"
6) "2"

zrem key value:移除sortset中的成员

127.0.0.1:6379> zrem myzset lisi
(integer) 1
127.0.0.1:6379> zrange myzset 0 -1
1) "zhangsan"
2) "satellite"

2.Redis的通用命令

keys pattern:获取所有与pattern匹配的key,返回所有与该key匹配的keys。*表示任意一个或多个字符,?表示任意一个字符

127.0.0.1:6379> keys *
1) "user:1"
2) "age"
3) "mylist"
4) "myset"
5) "myzset"
127.0.0.1:6379> keys my*
1) "mylist"
2) "myset"
3) "myzset"

del key1 key2 ...:删除指定的key

127.0.0.1:6379> del age myset
(integer) 2
127.0.0.1:6379> keys *
1) "user:1"
2) "mylist"
3) "myzset"

exists key:判断该key是否存在。1代表存在;0代表不存在

127.0.0.1:6379> keys *
1) "user:1"
2) "mylist"
3) "myzset"
127.0.0.1:6379> exists age
(integer) 0
127.0.0.1:6379> exists mylist
(integer) 1

type key:获取指定key的类型。该命令将以字符串的格式返回。 返回的字符串为string、list、set、hash,如果key不存在返回none

127.0.0.1:6379> type user:1
hash
127.0.0.1:6379> type myset
none
127.0.0.1:6379> type mylist
list
127.0.0.1:6379> type myzset
zset

expire key second:设置key。second单位为秒

127.0.0.1:6379> set name wang
OK
127.0.0.1:6379> expire name 10
(integer) 1
127.0.0.1:6379> keys *
1) "name"
2) "user:1"
3) "mylist"
4) "myzset"
127.0.0.1:6379> keys *
1) "user:1"
2) "mylist"
3) "myzset"

ttl key:查看指定key的剩余时间。-2代表已经被删掉

127.0.0.1:6379> ttl name
(integer) -2

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

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

相关文章

【Godot4.3】MarkDown编辑和控件事实渲染

概述 这是本人2024年5月份左右编写的一个简易的MarkDown编辑和渲染测试项目,基于自己编写的MarkDown解析和生成类MDdoc编写。之前是作为一个试验性的内容混乱的放置在另一个测试项目中,现在独立为一个单独项目。因为测验成功后就一直没改动,…

IEEE P3233 标准启动会回顾:迈向去中心化存储标准化的第一步

2024 年 8 月 30 日,由 CESS 发起的 IEEE P3233《Standard for Blockchain-Based Decentralized Storage Protocol Specification》标准启动会顺利举行。 此次会议标志着 IEEE P3233 标准制定的正式启动,也代表了去中心化存储技术标准化进程的正式开始。…

数据源10min自动断开连接导致查询抛异常(未获取可用连接)

由于个人能力有限,本文章仅仅代表本人想法,若有不对请即时指出,若有侵权,请联系本人。 1 背景 工作中引入druid来管理数据源连接,由于数据源每隔10分钟强制管理空闲超过10分钟的连接,导致每隔10分钟出现1…

如何构造哈夫曼树

目录 一、哈夫曼树的概念 1、结点的权: 2、结点的带权路径长度 3、树的带权路径长度 4、哈夫曼树 二、哈夫曼树的构造 1、构造步骤 三、哈夫曼树的编码 一、哈夫曼树的概念 1、结点的权: 定义: 每个结点的权重(重要性…

fork入门

1哪个分支会打印 如下是fork的典型问题。fork之后有3个分支,分别是pid等于0,pid大于0,pid小于0。如果我们不了解fork的话,那么肯定会认为这里的if else分支只会有一个分支被执行。而实际的执行结果是两个分支都执行了。fork返回之…

客流预测 | 基于Transformer下车站点客流推断研究(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于Transformer的车站客流推断研究是指利用Transformer模型来预测车站的客流情况。Transformer是一种强大的深度学习模型,特别擅长处理序列数据。研究可以为城市交通管理提供重要决策支持,帮…

恢复丢失的数据:iPhone 恢复指南

不小心删除了 iPhone 上的重要数据并意识到它没有备份?您并不孤单。在 iPhone 上恢复永久删除的数据似乎令人生畏,但并非总是不可能。我们将探索各种方法,包括使用专门的软件和备份恢复选项,为您提供恢复丢失数据的最佳机会。 常见…

裸机:LCD

什么是LCD? LCD,全称为Liquid Crystal Display,即液晶显示屏,是一种利用液晶物质的光学特性,通过控制电场来改变光的透过性,从而实现图像显示的技术。以下是关于LCD的详细解释: 一、LCD的基本…

ElementPlus实现页面,上部分是表单,下部分是表格

效果 <template><el-dialog v-model"produceDialogFormVisible" draggable custom-class"dialog-title" :title"title" :close-on-click-modal"false"><el-form label-width"120px"><el-row :gutter&q…

【STM32H743】将全局变量定义到指定内存MDK

STM32H743将全局变量定义到指定内存MDK 2024年8月31日 #elecEngeneer 上链 参考硬汉嵌入式。 这样Target里面的设置就作废了。 把H743的几个SRAM写上 ; ************************************************************* ; *** Scatter-Loading Description File generated by…

5G智慧工地项目汇报方案

1. 项目概述 5G智慧工地项目旨在通过5G技术提升建筑工地的通信、安防、质量管理和精益化管理水平&#xff0c;打造科技感十足的“5G智慧建造体验中心”。 2. 智慧工地需求 当前智慧工地需求集中在实时化、可视化、多元化、智慧化和便捷化&#xff0c;以满足全时段安全管理和…

《机器学习》周志华-CH4(决策树)

4.1基本流程 决策树是一类常见的机器学习方法&#xff0c;又称“判别树”&#xff0c;决策过程最终结论对应了我们所希望的判定结果。 一棵决策树 { 一个根结点 包含样本全集 若干个内部结点 对应属性测试&#xff0c;每个结点包含的样本集合根据属性测试结果划分到子结点中 若…

基于ssm+vue的汽车租赁管理系统

摘要 随着移动应用技术的发展&#xff0c;越来越多的用户借助于移动手机、电脑完成生活中的事务&#xff0c;许多的传统行业也更加重视与互联网的结合&#xff0c;以提高商家知名度和寻求更高的经济利益。针对传统汽车租赁系统&#xff0c;租赁信息、续租信息等问题&#xff0c…

第4章-07-将WebDriver获取的Cookie传递给Requests

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

linux下基本指令(持续更新)

目录 1.adduser 2.passwd 3.userdel 4. su - 5.ls 6.pwd ​编辑 7.cd 8.touch 9.mkdir &#x1f680; 10. rmdir && rm &#x1f680; 11.whoami &#xff08;who am i) 12.clear 13.tree (需要安装 yum install -y tree) 14.who 1.adduser 语法&…

TCP协议(1)

目录 一、TCP协议介绍 二、TCP协议格式 2.1、解包与分用 2.2、TCP的可靠性 2.3、TCP的工作模式 2.4、确认应答(ACK)机制 2.5、32位序号与确认序号 2.6 16位窗口大小 2.7 六个标志位 2.7.1、SYN 2.7.2、FIN 2.7.3、ACK 2.7.4、PSH 2.7.5、URG 2.7.6、RST 2.8、T…

Arco Voucher - 不知道有什么用的凭证单据录入表单插件

关于 Arco Voucher Arco Voucher 插件是一款不知道有什么用的凭证单据录入表单插件&#xff0c;可能只是为了看着像传统的凭证单据。 动态表头 附件上传/预览 添加凭证明细 https://apps.odoo.com/apps/modules/browse?authorzerone40 如有插件定制化需求或其他插件资源…

MATLAB智能优化算法-学习笔记(2)——变邻域搜索算法求解旅行商问题【过程+代码】

旅行商问题 (TSP) 旅行商问题(Traveling Salesman Problem, TSP)是经典的组合优化问题之一。问题的描述是:给定若干个城市以及每对城市之间的距离,一个旅行商需要从某个城市出发,访问每个城市恰好一次,最后回到出发城市,目标是找到一条总距离最短的环路。TSP 是 NP-har…

通用 PDF OCR 到 Word API 数据接口

通用 PDF OCR 到 Word API 数据接口 文件处理&#xff0c;OCR&#xff0c;PDF 高可用图像识别引擎&#xff0c;基于机器学习&#xff0c;超精准识别率。 1. 产品功能 通用识别接口&#xff1b;支持中英文等多语言字符混合识别&#xff1b;formdata 格式 PDF 文件流传参&#xf…

MySql执行计划(Explain关键字详解)

文章目录 预备知识学习本内容的前提必须了解1.什么是Explain?2.如何使用Explain?3.explain字段详解3.1、ID字段(情况1)、id值不同:(情况2)、id值相同:(情况3)、id列为null:(情况4)、子查询优化后3.2、select_type字段:表示那个是主要的查询1.simmple:2.primary:3.derived:…