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

目录

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.pswp.cn/web/82628.shtml

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

相关文章

Spring Boot缓存组件Ehcache、Caffeine、Redis、Hazelcast

一、Spring Boot缓存架构核心 Spring Boot通过spring-boot-starter-cache提供统一的缓存抽象层&#xff1a; #mermaid-svg-PW9nciqD2RyVrZcZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PW9nciqD2RyVrZcZ .erro…

【photoshop】专色浓度和专色密度

1.1 专色浓度 是图层填充到专色前&#xff0c;设置的前景色CMYK的K值。填充到专色后&#xff0c;可以查看到专色中图层的k值。 ps前景色填充快捷键 1.Windows 系统&#xff1a;Alt Delete&#xff1b;2.Mac 系统&#xff1a;Option Delete。 1.2专色密度 专色的属性&…

用电脑控制keysight示波器

KEYSIGHT示波器HD304MSO性能 亮点&#xff1a; 体验 200 MHz 至 1 GHz 的带宽和 4 个模拟通道。与 12 位 ADC 相比&#xff0c;使用 14 位模数转换器 &#xff08;ADC&#xff09; 将垂直分辨率提高四倍。使用 10.1 英寸电容式触摸屏轻松查看和分析您的信号。捕获 50 μVRMS …

leetcode hot100刷题日记——33.二叉树的层序遍历

解题总结二维vector的初始化方法 题目描述情况1&#xff1a;不确定行数和列数情况2&#xff1a;已知行数和列数情况3&#xff1a;已知行数但不知道列数情况4&#xff1a;已知列数但不知道行数 题目描述 解答&#xff1a;用队列 思路都差不多&#xff0c;我觉得对于我自己来说&a…

微服务面试资料1

在当今快速发展的技术领域&#xff0c;微服务架构已经成为构建复杂系统的重要方式之一。本文将围绕微服务的核心概念、技术栈、分布式事务处理、微服务拆分与设计&#xff0c;以及敏捷开发实践等关键问题展开深入探讨&#xff0c;旨在为准备面试的 Java 开发者提供一份全面的复…

【设计模式-4.8】行为型——中介者模式

说明&#xff1a;本文介绍行为型设计模式之一的中介者模式 定义 中介者模式&#xff08;Mediator Pattern&#xff09;又叫作调节者模式或调停者模式。用一个中介对象封装一系列对象交互&#xff0c;中介者使各对象不需要显式地互相作用&#xff0c;从而使其耦合松散&#xf…

Oracle 的 SEC_CASE_SENSITIVE_LOGON 参数

Oracle 的SEC_CASE_SENSITIVE_LOGON 参数 关键版本信息 SEC_CASE_SENSITIVE_LOGON 参数在以下版本中被弃用&#xff1a; Oracle 12c Release 1 (12.1)&#xff1a; 该参数首次被标记为"过时"(obsolete)但依然保持功能有效 Oracle 18c/19c 及更高版本&#xff1a; …

《图解技术体系》How Redis Architecture Evolves?

Redis架构的演进经历了多个关键阶段&#xff0c;从最初的内存数据库发展为支持分布式、多模型和持久化的高性能系统。以下为具体演进路径&#xff1a; 单线程模型与基础数据结构 Redis最初采用单线程架构&#xff0c;利用高效的I/O多路复用&#xff08;如epoll&#xff09;处…

【电赛培训课】测量与信号类赛题分析

一、赛题基本情况及硬件电路准备 &#xff08;一&#xff09;赛题基本情况 1.测量与信号类赛题统计 2.测量与信号类赛题特点 &#xff08;二&#xff09;硬件电路准备 综测环节不允许带入电脑和手机&#xff0c;需要自己根据题目要求和芯片参数指标进行设计和计算&#xff0c…

移动AI神器GPT Mobile:多模型自由切换

GPT Mobile是什么 GPT Mobile是一款开源的本地移动部署AI工具,主要用于安卓设备。以下是其相关介绍: 功能特点 多模型交互:支持与多个大型语言模型(LLM)同时进行对话,用户导入相应的API密钥,就可连接OpenAI、Anthropic、Google、Ollama等平台,还能根据需求自由切换不同…

AirSim/Cosys-AirSim 游戏开发(二)使用自定义场景

在实际的开发过程中很少会只用 AirSim 自带的 Blocks 场景&#xff0c;通常需要用到自定义的一些环境和模型&#xff0c;依托于强大的 UE 引擎可以较为逼真地完成场景渲染。这篇博客记录了如何从头开始导入一个自定义场景并加载 AirSim 插件。 【Note】&#xff1a;由于 UE Ed…

GPU 图形计算综述 (三):可编程管线 (Programmable Pipeline)

2000年左右&#xff0c;微软在DirectX 8.0中首次提出了Shader Model 1.0和顶点着色器&#xff08;Vertex Shader&#xff09;的概念&#xff0c;标志着可编程管线时代的来临。随后&#xff0c;在DirectX 9.0中推出了Shader Model 2.0和像素着色器&#xff08;Pixel Shader&…

【Go语言基础【3】】变量、常量、值类型与引用类型

文章目录 一、值&#xff08;Value&#xff09;与字面量&#xff08;Literal&#xff09;1. 值2. 字面量 二、变量&#xff08;Variable&#xff09;1. 声明方式2. 赋值方式3. 变量默认值4. 类型与值的匹配 三、常量&#xff08;Constant&#xff09;1. 声明方式2. 常量的特性3…

AWS 亚马逊 S3存储桶直传 前端demo 复制即可使用

自己踩过坑不想别人也踩坑了 亚马逊S3存储桶直传前端demo复制即可使用 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0…

Python数据可视化科技图表绘制系列教程(四)

目录 带基线的棒棒糖图1 带基线的棒棒糖图2 带标记的棒棒糖图 哑铃图1 哑铃图2 包点图1 包点图2 雷达图1 雷达图2 交互式雷达图 【声明】&#xff1a;未经版权人书面许可&#xff0c;任何单位或个人不得以任何形式复制、发行、出租、改编、汇编、传播、展示或利用本博…

如何有效删除 iPhone 上的所有内容?

“在出售我的 iPhone 之前&#xff0c;我该如何清除它&#xff1f;我担心如果我卖掉它&#xff0c;有人可能会从我的 iPhone 中恢复我的信息。” 升级到新 iPhone 后&#xff0c;你如何处理旧 iPhone&#xff1f;你打算出售、以旧换新还是捐赠&#xff1f;无论你选择哪一款&am…

[yolov11改进系列]基于yolov11使用SwinTransformer替换backbone用于提高多尺度特征提取能力的python源码+训练源码

【SwinTransformer介绍】 摘要 ViT的缺点&#xff1a; Transformer在语言处理中的基本元素是word token&#xff0c;其特点是语义信息比较密集。而ViT中token的尺度&#xff08;scale&#xff09;是固定的&#xff0c;且视觉token携带的语义信息比语言文字序列差&#xff0c…

NoSQL 之 Redis 配置与优化

目录 一、Redis 介绍 1、关系型数据库与非关系型数据库 &#xff08;1&#xff09;关系型数据库 &#xff08;2&#xff09;非关系型数据库 &#xff08;3&#xff09;非关系型数据库产生背景 2、Redis 基础 &#xff08;1&#xff09;Redis 简介 &#xff08;2&#x…

算法复杂度,咕咕咕

1.数据结构与算法 数据结构是计算机存储&#xff0c;组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的集合。可以理解为形状不同的容器。 算法是定义好的计算过程&#xff0c;取输入值&#xff0c;经过一系列计算方法变成输出值。 &#xff08;推荐…

【Linux】 Linux 进程控制

参考博客&#xff1a;https://blog.csdn.net/sjsjnsjnn/article/details/125581083 一、进程创建 1.1 fork()函数 在linux中fork函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。进程调用fork&#xff0c;当…