Redis 常用数据类型和命令使用

news2025/6/4 17:10:55

目录

1 string    

2 hash

3 list

4 set集合

5 zset有序集合


1 string    


值可以是字符串、数字和二进制的value,值最大不能超过512MB

应用场景:
应用程序缓存
计数器
web共享session
限速


1.1 设置单个键值
set <key> value [EX seconds|PX milliseconds] [nx|xx]
ex seconds 为键值设置秒级过期时间
px milliseconds 为键值设置毫秒级过期时间
nx 键必须补存在,才可以设置成功,用于添加
xx 与nx相反,键必须存在,才可以设置成功,用于更新

示例:
设置key1值为value1,过期时间60秒,键存在才更新
127.0.0.1:6379>set key1 value1 ex 60  xx 


1.2 获取值
get key

示例:
127.0.0.1:6379> get key1
"value1"


1.3 计数
incr key,
值为整数返回自增后的结果
值不是整数返回错误
键不存在按照值为0自增返回结果1
其他命令:decr(自减),incrby(自增指定数字),decrby(自减指定数字)

示例:
127.0.0.1:6379> set counter 1
OK
127.0.0.1:6379> get counter
"1"

127.0.0.1:6379> incr counter
(integer) 2
127.0.0.1:6379> get counter
"2"

127.0.0.1:6379> decr counter
(integer) 1
127.0.0.1:6379> get counter
"1"

127.0.0.1:6379> incrby counter 10
(integer) 11
127.0.0.1:6379> get counter
"11"

127.0.0.1:6379> decrby counter 3
(integer) 8
127.0.0.1:6379> get counter
"8"

1.4 追加值
append <key> value    #追加到原值的末尾

实例:
127.0.0.1:6379> get key2
"value2"
127.0.0.1:6379> append key2 "-key2"
(integer) 11
127.0.0.1:6379> get key2
"value2-key2"


1.5字符串长度
strlen <key> #获取值的长度

实例:
127.0.0.1:6379> strlen key2
(integer) 11

1.6 获取部分字符串
getrange <key> start end

实例:
127.0.0.1:6379> getrange key2 1 2
"al"

1.7 删除key
del <key>

实例:
127.0.0.1:6379> del key1
(integer) 1

1.8 批量设置值
mset <key> value [key value ...]

实例:
127.0.0.1:6379> mset a 1 b 2 c 3 d 4 e 5
OK

1.9 批量获取
mget <kye> [key ...]

实例:
127.0.0.1:6379> mget a b c d e
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

2 hash


是一个键值对集合

应用场景:
缓存对象,一个key里有多个字段,比如缓存用户登录信息。

2.1 设置值
hset <key> field value     #单个值
hmget <key> field [field ...]

实例:
127.0.0.1:6379> hset myhash name zyb
(integer) 1
127.0.0.1:6379> hmset myhash age 10 address gz
OK

2.2 查询
hget <key> field       #获取单个field的值
hmget <key> field [field ..]  #获取多个field的值

实例:
127.0.0.1:6379> hget myhash name
"zyb"
127.0.0.1:6379> hmget myhash age address
1) "10"
2) "gz"


hkeys <key>   #获取所有field

实例:
127.0.0.1:6379> hkeys myhash
1) "name"
2) "age"
3) "address"


hvals <key>   #获取所有value

实例:
127.0.0.1:6379> hvals myhash
1) "zyb"
2) "10"
3) "gz"

hgetall <key>  #获取所有的field-value

实例:
127.0.0.1:6379> hgetall myhash
1) "name"
2) "zyb"
3) "age"
4) "10"
5) "address"
6) "gz"


hlen <key> #计算field个数

实例:
127.0.0.1:6379> hlen myhash
(integer) 3


hexists <key> field  #判断field是否存在

实例:
127.0.0.1:6379> hexists myhash name
(integer) 1  
返回1表示该field存在

hstrlen <key> field   #计算value的字符串长度

实例:
127.0.0.1:6379> hstrlen myhash name
(integer) 3


2.3 删除field
hdel <key> field [field ...]

实例:
127.0.0.1:6379> hdel myhash address
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "name"
2) "zyb"
3) "age"
4) "10"


3 list


列表类型是用来存储多个有序字符串

应用场景:
消息队列: lpush+rpop=消息队列,生产和消费
文章列表
栈: lpush+lpop=stack
lpush+ltrim =Capped collection 有限集合

3.1 添加
#从左/右边插入元素
lpush <key> value [value ...]

实例:
127.0.0.1:6379> lpush mylist a b c d e f 
(integer) 6

#向某个元素前或后插入元素
linesert <key> before|after pivot value

示例: 在a元素之后插入aaa
127.0.0.1:6379> LINSERT mylist before a aaa
(integer) 7

#rpoplpush 移除列表key1的最后一个元素,并将该元素添加到另一个列表key2的左边并返回
rpoplpush <key1> <key2>


3.2 删除
#从列表左/右侧弹出元素
rpop/lpop key count

实例:
127.0.0.1:6379> lpop mylist
"f"

#删除指定元素
lrem key count value
count>0 从左到右删除最多count个元素
count<0 从右到左删除最多count绝对值个元素
count=0 删除所有

示例:
127.0.0.1:6379> lrem mylist 2 a
(integer) 2


#按照索引范围修剪列表
ltrim key start end      #只保留列表listkey第start个到end个元素

示例:
127.0.0.1:6379> LTRIM mylist 2 5
OK

3.3 查询
#获取指定范围内的元素列表
lrange key start end 

示例:
127.0.0.1:6379> LRANGE mylist 0 -1    #所有元素
1) "c"
2) "b"
3) "aaa"
4) "a"

#获取列表指定索引下标的元素
lindex key index

示例:
127.0.0.1:6379> LINDEX mylist 2
"aaa"

#获取列表长度
llen key

示例:
127.0.0.1:6379> LLEN mylist
(integer) 4

#修改指定索引下标的元素
lset key index newValue

示例:
127.0.0.1:6379> LSET mylist 2 python   #索引从0开始计算
OK
127.0.0.1:6379> LRANGE mylist 0 -1
1) "c"
2) "b"
3) "python"
4) "a"

4 set集合

应用场景:
标签,给用户添加标签
独立ip
点赞
共同好友,利用set的交集

4.1 添加元素,返回结果为添加成功的元素个数
sadd key member [member ...]

示例:
127.0.0.1:6379> sadd myset a b c d
(integer) 4


4.2 删除元素,返回结果为成功删除元素个数
srem key memeber [member ...]

示例:
127.0.0.1:6379> SREM myset a
(integer) 1

4.3 计算元素个数
scard key

示例:
127.0.0.1:6379> SCARD myset
(integer) 3


4.4 判断元素是否在集合中
sismember key member

示例:
127.0.0.1:6379> SISMEMBER myset a
(integer) 0  #不存在
127.0.0.1:6379> SISMEMBER myset b
(integer) 1  #存在


4.5 随机从集合返回指定个数元素,不会删除
srandmember key [count]

4.6 随机从集合弹出元素删除
spop key [count]

4.7 获取所有元素
smembers key


4.8 求多个集合的交集
sinter key [key ...]

4.9 求多个集合的并集
suinon key [key ...]

4.10 求多个集合差集
sdiff key [key ...]

4.11 将交集、并集、差集的结果保存
sinterstore destination key [key ...] 
suionstore destination key [key ...] 
sdiffstore destination key [key ...] 


4.12 将集合中一个member移到另一个集合
SMOVE source destination member

实例:
127.0.0.1:6379> SMOVE myset myset2 b
(integer) 1
127.0.0.1:6379> SMEMBERS myset2
1) "b"


5 zset有序集合


应用场景:
排行榜
社交网络
队列

5.1 添加成员
zadd key score member [score member ...]
zincrby key increment member    #增加成员分数

示例:
127.0.0.1:6379> ZADD myzadd 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6

5.2 计算成员个数
zcard key

5.3 计算某个成员的分数
zscore key member

5.4 计算成员的排名
zrank key member  #分数从低到高返回排名
zrevrange key member #分数从高到低返回排名

5.5 返回指定排名范围成员
zrange key start end  #从低到高
zrevrage key start end #从高到低

5.6 返回指定分数范围的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]     #从低到高
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]  #从高到低

5.7 返回指定分数范围成员个数
zcount key min max

5.8 删除成员
zrem key member [member ...]

5.9 删除指定排名内的升序元素
ZREMRANGEBYRANK key start stop

5.10删除指定分数范围的成员
ZREMRANGEBYSCORE key min max

5.11 交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

5.12 并集
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

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

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

相关文章

【Linux系统】第八节—进程概念(上)—冯诺依曼体系结构+操作系统+进程及进程状态+僵尸进程—详解!

hi&#xff0c;我是云边有个稻草人 偶尔中二的博主^(*&#xffe3;(oo)&#xffe3;)^&#xff0c;与你分享专业知识&#xff0c;祝博主们端午节快乐&#xff01; Linux—本节博客所属专栏—持续更新中—欢迎订阅&#xff01; 目录 一、冯诺依曼体系结构 二、操作系统(Opera…

数据结构——优先级队列(PriorityQueue)

1.优先级队列 优先级队列可以看作队列的另一个版本&#xff0c;队列的返回元素是由是由插入顺序决定的&#xff0c;先进先出嘛&#xff0c;但是有时我们可能想要返回优先级较高的元素&#xff0c;比如最大值&#xff1f;这种场景下就由优先级队列登场。 优先级队列底层是由堆实…

代谢组数据分析(二十六):LC-MS/MS代谢组学和脂质组学数据的分析流程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包依赖包安装包加载需要的R包数据下载以及转换mzML数据预处理代谢物注释LipidFinder过滤MultiABLER数据预处理过滤补缺失值对数变换数据标准化下游数据分析总结系统信息参考介…

【ARM】【FPGA】【硬件开发】Chapter.1 AXI4总线协议

Chapter.1 AXI4总线协议 作者&#xff1a;齐花Guyc(CAUC) 一、总线介绍 AXI4总线 AXI4总线就像是SoC内部的“高速公路”&#xff0c;负责在不同硬件模块之间高效传输数据。 AXI4协议通过 5个独立通道 传输数据和控制信号&#xff0c;每个通道都有自己的信号线&#xff0c;互…

把 jar 打包成 exe

1. 把自己的项目先正常打成jar包 2. 使用exe4j工具将jar转换为exe 2.1 exe4j下载地址&#xff1a;https://www.ej-technologies.com/download/exe4j/files 2.2 下载完成之后激活 2.3 可以点击Change License&#xff0c;输入秘钥L-g782dn2d-1f1yqxx1rv1sqd 2.4 直接下一步…

【目标检测】检测网络中neck的核心作用

1. neck最主要的作用就是特征融合&#xff0c;融合就是将具有不同大小感受野的特征图进行了耦合&#xff0c;从而增强了特征图的表达能力。 2. neck决定了head的数量&#xff0c;进而潜在决定了不同尺度样本如何分配到不同的head&#xff0c;这一点可以看做是将整个网络的多尺…

【经验】Ubuntu中设置terminator的滚动行数、从Virtualbox复制到Windows时每行后多一空行

1、设置terminator的滚动行数 1.1 问题描述 在终端 terminator 中&#xff0c;调试程序时&#xff0c;只能查看有限行数的打印日志&#xff0c;大约是500行&#xff0c;怎么能增加行数 1.2 解决方法 1&#xff09;安装terminator sudo apt install terminator和 terminato…

使用微软最近开源的WSL在Windows上优雅的运行Linux

install wsl https://github.com/microsoft/WSL/releases/download/2.4.13/wsl.2.4.13.0.x64.msi install any distribution from microsoft store, such as kali-linux from Kali office website list of distribution PS C:\Users\50240> wsl -l -o 以下是可安装的有…

HackMyVM-Teacher

信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.43.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-01 01:02 EDT Nmap scan report for 192.168.43.1 Host is up (0.0084s latency). MAC Address: C6:45:66:05:91:88 (Unknow…

BugKu Web渗透之矛盾

开启场景&#xff0c;打开网页。发现是一段php代码。 这段代码也很好理解&#xff0c;就是get方式传参num&#xff0c;如果num不是数字类型&#xff0c;那么输出num的值&#xff0c;并且num1时&#xff0c;输出flag的值。 首先看看is_numeric的意思。 开始我想到了使用科学技术…

Python实现P-PSO优化算法优化卷积神经网络CNN回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 随着人工智能和深度学习技术的快速发展&#xff0c;卷积神经网络&#xff08;CNN&#xff09;在图像分类、目标检测…

ssm 学习笔记day03

环境搭建 spring配置数据库 1.在pom.xml安装相应的依赖 2.在properties里面配置数据库的相关信息&#xff0c;需要强调的一点是&#xff0c;一定不要在properties里面添加任何空格&#xff0c;否则就会像我一样搞了两小时&#xff0c;数据一直报错&#xff0c;然后发现是空格的…

mkdir: cannot create directory ‘gitlab-stu’: No space left on device

Linux中创建目录时报错“mkdir: cannot create directory ‘gitlab-stu’: No space left on device”&#xff0c;磁盘空间不足。 使用df命令查看&#xff0c;发现 / 下面use%占满了&#xff1a; 查看inode使用情况&#xff1a; 可以看到docker的数据大部分存放在/var/lib/do…

ESP8285乐鑫SOCwifi芯片32bit MCU和2.4 GHz Wi-Fi

简介 ESP8285 拥有完整的且⾃成体系的 Wi-Fi ⽹络功能&#xff0c;既能够独⽴应⽤&#xff0c;也可以作为从机搭载于其他主机 MCU 运⾏。当 ESP8285 独⽴应⽤时&#xff0c;能够直接从外接 flash 中启动。内置的⾼速缓冲存储器有利于提⾼系统性能&#xff0c;并且优化存储系统。…

DL00916-基于深度学习的金枪鱼各类别目标检测含完整数据集

文末有获取方式 &#x1f680; 基于深度学习的金枪鱼目标检测——开创智能识别新领域&#xff01; 在计算机视觉和深度学习的快速发展中&#xff0c;目标检测 技术已成为提升行业效率的核心利器。而对于海洋生物领域&#xff0c;尤其是金枪鱼的 目标检测&#xff0c;更是填补了…

不可变集合类型转换异常

记录一个异常&#xff1a;class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目录 1、原因2、解决方式一3、解决方式二4、关于不可变集合的补充4.1 JDK8和9的对比4…

【PyQt5】从零开始的PyQt5 - QLabel篇

从零开始的PyQt5 - QLabel篇 引言一、简述二、例程2.1 显示到QWidget窗口上2.2 重新设置Label大小和对齐方式2.3 添加内容&#xff0c;设置边框2.4 显示富文本 三、参考 引言 QLabel主要用于显示文本或图像&#xff0c;不提供用户交互功能。本文主要简述PyQt5中的QLabel以及展…

多模态AI的企业应用场景:视觉+语言模型的商业价值挖掘

关键词&#xff1a;多模态AI | 视觉语言模型 | 企业应用 | 商业价值 | 人工智能 &#x1f4da; 文章目录 一、引言&#xff1a;多模态AI时代的到来二、多模态AI技术架构深度解析三、客服场景&#xff1a;智能化服务体验革命四、营销场景&#xff1a;精准投放与创意生成五、研…

数据结构(7)树-二叉树-堆

一、树 1.树的概述 现实生活中可以说处处有树。 在计算机里&#xff0c;有一种数据结构就是像现实中的树一样&#xff0c;有根&#xff0c;有分支&#xff0c;有叶子&#xff1b;一大片树就叫做森林。 这些性质抽象到计算机里也叫树&#xff0c;大致长这个样子&#xff1a; …

怎么快速判断一款MCU能否跑RTOS系统

最近有朋友在后台中私信我&#xff0c;说现在做项目的时候有时候总是会考虑要不要用RTOS&#xff0c;或者怎么考量什么时候该用RTOS比较好、 关于这个问题&#xff0c;我个人也是深有感触的&#xff0c;做开发这么久了&#xff0c;大大小小的产品都做过不少了。有用RTOS开发的…