Redis常用命令(超详细整理)

news2024/10/4 12:42:03

Redis常用命令(超详细整理)

服务器相关命令

  • ping : 检测连接是否存活
  • echo: 在命令行打印一些内容
  • quit、exit: 退出客户端
  • shutdown: 退出服务器端
  • info: 返回redis相关信息
  • config get dir/* 实时传递接收的请求
  • showlog: 显示慢查询
  • select n: 切换到数据库n,redis默认有16个数据库(DB 0~DB 15),默认使用的第0个
  • dbsize: 查看当前数据库大小
  • move key n: 不同数据库之间数据是不能互通的,move移动键到指定数据库
  • flushdb: 清空当前数据库中的键值对。
  • flushall: 清空所有数据库的键值对。

key相关命令

在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。

常用命令:

  • keys * :查看当前数据库中所有的key
  • dbsize: 键总数
  • exists key: 检查键是否存在
  • del key [key …]: 删除键
  • expire key seconds: 键过期
  • ttl key: 获取键的有效时长
  • persist key: 移除键的过期时间
  • type key: 键的数据结构类型
  • randomkey: 随机返回数据库中一个键
  • rename key1 key2 : 重命名
  • renamex key1 key2 : 当key2不存在时,key1重命名

代码示例:-
在这里插入图片描述

五大数据类型

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。其通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:

  • 字符串类型: string
  • 哈希类型: hash
  • 列表类型: list
  • 集合类型: set
  • 有序集合类型: sortedset(zset)

String(字符串)

字符串类型是Redis最基础的数据结构,其它的几种数据结构都是在字符串类型基础上构建的,字符串的值可以是:字符串、数字、二进制,但其值最大不能超过512M。

使用场景: 缓存、计数器、对象存储缓存(共享session)、限速

常用命令:

  • set key value: 设置一个key的value值
  • setnx key value: 仅当key不存在时进行set
  • setex key seconds value: set 键值对并设置过期时间
  • mset key value [key value …]: 设置多个key value
  • msetnx key1 value1 [key2 value2…]: 批量设置键值对,仅当参数中所有的key都不存在时执行,原子性操作,一起成功,一起失败
  • get key: 返回key的value
  • mget key [key …] : 批量获取多个key保存的值
  • exists key [key …]: 查询一个key是否存在
  • decr/incr key: 将指定key的value数值进行+1/-1(仅对于数字)
  • incrby/decrbyB key n: 按指定的步长对数值进行加减
  • incrbyfloat key n: 为数值加上浮点型数值
  • append key value: 向指定的key的value后追加字符串
  • strlen key: 返回key的string类型value的长度。
  • getset key value: 设置一个key的value,并获取设置前的值,如果不存在则返回null
  • setrange key offset value: 设置指定位置的字符
  • getrange key start end: 获取存储在key上的值的一个子字符串

代码示例:-
在这里插入图片描述

List(列表)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),也可以获取指定范围指定下标的元素等。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

两个特点:-
1.列表中的元素是有序的,可以通过索引下标获取某个元素霍某个某个范围内的元素列表-
2.列表中的元素可以是重复的

使用场景: 消息队列、栈、文章列表等。

常用指令:

  • 添加操作
  • lpush/rpush key value1[value2…]: 从左边/右边向列表中PUSH值(一个或者多个)
  • lpushx/rpushx key value: 向已存在的列名中push值(一个或者多个),list不存在 lpushx失败
  • linsert key before|after pivot value: 在指定列表元素的前/后 插入value
  • 查找操作
  • lindex key index: 通过索引获取列表元素
  • lrange key start end: 获取list 起止元素 (索引从左往右 递增)
  • llen key: 查看列表长度
  • 删除操作
  • lpop/rpop key: 从最左边/最右边移除值 并返回
  • lrem key count value: count >0:从头部开始搜索 然后删除指定的value 至多删除count个 count < 0:从尾部开始搜索… count = 0:删除列表中所有的指定value。
  • ltrim key start end: 通过下标截取指定范围内的列表
  • rpoplpush source destination: 将列表的尾部(右)最后一个值弹出,并返回,然后加到另一个列表的头部
  • 修改操作
  • lset key index value: 通过索引为元素设值
  • 阻塞操作
  • blpop/brpop key1[key2] timout: 移出并获取列表的第一个/最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
  • brpoplpush source destination timeout: 和rpoplpush功能相同,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

代码示例:-
在这里插入图片描述

Set(集合)

Redis的Set是string类型的无序集合,我们不能通过索引获取元素。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

应用场景: 标签(tag)

常用命令:

  • 集合内操作
  • sadd key member1[member2…]: 向集合中无序增加一个/多个成员
  • srem key member1[member2…]: 移除集合中一个/多个成员
  • scard key: 获取集合的成员数
  • smembers key: 返回集合中所有的成员
  • sismember key member: 查询member元素是否是集合的成员,若存在返回1,不存在返回0
  • srandmember key [count]: 随机返回集合中count个成员,count缺省值为1
  • spop key [count]: 随机移除并返回集合中count个成员,count缺省值为1
  • 集合间操作
  • sinter key1 [key2…]: 返回所有集合的交集
  • sinterstore destination key1[key2…]: 在SINTER的基础上,存储结果到集合中。覆盖
  • sunion key1 [key2…]: 返回所有集合的并集
  • sunionstore destination key1 [key2…]: 在SUNION的基础上,存储结果到及和张。覆盖
  • sdiff key1[key2…]: 返回所有集合的差集 key1- key2 - …
  • sdiffstore destination key1[key2…]: 在SDIFF的基础上,将结果保存到集合中。覆盖
  • smove source destination member: 将source集合的成员member移动到destination集合
  • sscan key [MATCH pattern] [COUNT count]: 在大量数据环境下,使用此命令遍历集合中元素,每次遍历部分

代码示例:

在这里插入图片描述

Hash(哈希)

几乎所有的编程语言都提供了哈希(hash)结构,Redis中 hash 是一个string类型的field和value的映射表value={{field1,value1},{field2,value2}…},可以将一个Hash表作为一个对象进行存储,表中存放对象的信息。

应用场景: 用户信息缓存

常用命令:

  • hset key field value: 将哈希表 key 中的字段 field 的值设为 value。重复设置同一个field会覆盖,返回0
  • hmset key field1 value1 [field2 value2…]: 同时将多个 field-value (域-值)对设置到哈希表 key 中。
  • hsetnx key field value: 只有在字段 field不存在时,设置哈希表字段的值。
  • hget key field value: 获取存储在哈希表中指定字段的值
  • hmget key field1 [field2…]: 获取所有给定字段的值
  • hexists key field: 查看哈希表 key 中,指定的字段是否存在。
  • hdel key field1 [field2…]: 删除哈希表key中一个/多个field字段
  • hlen key: 获取哈希表中字段的数量
  • hkeys key: 获取所有字段field
  • hvals key: 获取哈希表中所有值value
  • hgetall key: 获取在哈希表key 的所有字段和值
  • hincrby key field n: 为哈希表 key 中的指定字段的整数值加上增量n,并返回增量后结果 一样只适用于整数型字段
  • hincrbyfloat key field n: 为哈希表 key 中的指定字段的浮点数值加上增量 n。
  • hscan key cursor [MATCH pattern] [COUNT count]: 迭代哈希表中的键值对。

代码示例:

在这里插入图片描述

Zset(有序集合)

在有序集合中保留了不能有重复成员的特性,但其中的成员是可以排序的,每一个元素都会关联一个double类型的分数(score)作为排序依据,score相同时按字典顺序排序。redis正是通过分数来为集合中的成员进行从小到大的排序。

应用场景: 排行榜系统,成绩单,工资表

常用命令:

  • 集合内
  • zadd key score member1 [score2 member2]: 向有序集合添加一个或多个成员,或者更新已存在成员的分数
  • zcard key: 获取有序集合的成员数
  • zscore key member: 返回有序集中,成员的分数值
  • zcount key min max: 计算在有序集合中指定区间score的成员数
  • zlexcount key min max: 在有序集合中计算指定字典区间内成员数量
  • zincrby key n member: 有序集合中对指定成员的分数加上增量 n
  • zscan key cursor [MATCH pattern] [COUNT count]: 迭代有序集合中的元素(包括元素成员和元素分值)
  • 范围查询
  • zrank key member: 返回有序集合中指定成员的索引
  • zrevrank key member: 返回有序集合中指定成员的索引,从大到小排序
  • zrange key start end: 通过索引区间返回有序集合成指定区间内的成员
  • zrevrange key start end: 通过索引区间返回有序集合成指定区间内的成员,分数从高到底
  • zrangebylex key min max: 通过字典区间返回有序集合的成员
  • zrevrangebylex key max min: 按字典顺序倒序返回有序集合的成员
  • zrangebyscore key min max: 返回有序集中指定分数区间内的成员 -inf 和 +inf分别表示最小最大值,只支持开区间
  • zrevrangebyscore key max min: 返回有序集中指定分数区间内的成员,分数从高到低排序
  • 删除操作
  • zrem key member1 [member2…]: 移除有序集合中一个/多个成员
  • zremrangebylex key min max: 移除有序集合中给定的字典区间的所有成员
  • zremrangebyrank key start stop: 移除有序集合中给定的排名区间的所有成员
  • zremrangebyscore key min max: 移除有序集合中给定的分数区间的所有成员
  • 集合间操作
  • zinterstore destination numkeyskey1 [key2 …]: 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中,numkeys:表示参与运算的集合数,将score相加作为结果的score
  • zunionstore destination numkeys key1 [key2…]: 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中

代码示例:-
在这里插入图片描述

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

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

相关文章

69.【C语言】动态内存管理(重点)(2)

目录 3.free函数 cplusplus网的翻译 提炼要点 使用 x86debug环境下, 打开内存窗口 建议 3.free函数 cplusplus的介绍 点我跳转 cplusplus网的翻译 函数 free void free (void* ptr); 释放内存块 之前通过调用malloc来分配一块内存,calloc和recalloc是来释放内存块的,让内…

Sublime快捷键的使用和修改

sublime快捷键 Ctrl Shift D 复制光标所在整行&#xff0c;插入到下一行Ctrl Shift K 删除整行 如果快捷键冲突了&#xff0c;就需要修改 sublime快捷键修改 示例&#xff1a;当前 Ctrl Shift D 冲突了 1.选择 首选项 -> 按键绑定-默认 2.按住 Ctrl F&#xff0…

初级前端面试常见问题(上岸某公司)

一、HTML5CSS篇 1.css隐藏元素方法 display:none position:absolute 移除到可视区域之外 visibility:hidden z-index:负值&#xff0c;用其他元素遮盖 opacity:0 clip/clip-…

心觉:做真正对自己成长有价值的事情

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作189/1000天 不知不觉已经持续写了189天&#xff0c;每日一篇从不间断 这段时间最大的收获&#xff0c;就是看透了很多事物 自我觉…

Typora解决图片复制到其他博客平台,解决图片显示转存失败(CSDN除外)

目录 一、Typora这个Markdown编辑器的确好用1.1 安装 二、 问题“图片转存失败”2.1 问题具体显示如下&#xff1a;2.2 问题分析&#xff1a;其实就是图片在typora里面是使用的本地路径&#xff0c;因此不显示&#xff0c; 三、解决方案3.1打开Typora&#xff0c;按下述图片显示…

51c视觉~CV~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/11638046 一、 搭建半自动标注工具 本文主要介绍的半自动标注工具为pyOpenAnnotate&#xff0c;此工具是基于Python和OpenCV实现&#xff0c;最新版本为0.4.0&#xff0c;可通过下面指令安装使用&#xff1a; pip install p…

【开源免费】基于SpringBoot+Vue.JS洗衣店订单管理系统(JAVA毕业设计)

本文项目编号 T 068 &#xff0c;文末自助获取源码 \color{red}{T068&#xff0c;文末自助获取源码} T068&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 顾…

智慧水务可视化:高效管理水资源

利用图扑先进的可视化技术&#xff0c;实现对水资源的实时监控与高效管理&#xff0c;提高水务工作的透明度和决策效率&#xff0c;促进水资源的可持续利用。

通信工程学习:什么是ARP地址解析协议

ARP&#xff1a;地址解析协议 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09;是一种在计算机网络中用于将IP地址映射为MAC地址的协议。它是TCP/IP协议栈中的一个重要组成部分&#xff0c;特别是在IPv4网络中&#xff0c;扮演着至关重要的角色…

二叉树深度学习——二叉树的最近公共祖先

1.题目解析 题目来源&#xff1a;236.二叉树的最近公共祖先 测试用例 2.算法原理 基本解法O(N^2) 这里我们可以将寻找的两节点分为在同一子树与不在同一子树的两种情况分析 1.在同一子树&#xff1a;由于自己可以是自己的祖先&#xff0c;所以寻找层数较高的节点就是二者的公共…

AFSim仿真系统 --- 系统简解_03( Warlock模块 - 人工干预 在仿真领域中指的是AFSIM的操作员互动可视化应用程序)

我们就用保留单词 Warlock Warlock&#xff08;在仿真领域中指的是AFSIM的操作员互动可视化应用程序--人工干预 &#xff09; Warlock是AFSIM的操作员环环相扣&#xff08;Operator-in-the-Loop&#xff09;视觉应用程序。它提供了一个图形环境&#xff0c;用于在运行时查看和…

【知识分享】如何计算开关电路中的RC-Snubber参数

在实际的开关电路中&#xff0c;会存在很多的寄生参数&#xff0c;当高边开关被打开或关闭时&#xff0c;在寄生电感器中积累的能量会在输入回路中引起共振&#xff0c;并且&#xff0c;寄生元件的非常小的值就可以使共振频率超过几百MHz&#xff0c;导致EMI的恶化&#xff0c;…

TCP BIC 的拟合函数分析

前面说了这么多&#xff0c;还没有对 bic 的数学性质进行分析&#xff0c;本文补上。 tcp reno 完全依赖 ack 时钟以 rtt 为单位线性增窗&#xff0c;增窗速度与 rtt 负相关&#xff0c;如何在 rtt 比较大时增加增窗速度&#xff0c;这就是 bic&#xff0c;以二分替换遍历。 …

VirtulBOX Ubuntu22安装dpdk23.11

目录 依赖包安装 Python安装 numa安装 ​编辑Python pip3安装 ​编辑pyelftools安装 meson和ninja安装 ​编辑构建与编译 Meson构建DPDK ​编辑Ninja安装DPDK ​编辑VFIO-PCI驱动安装 大页内存和IOMMU配置 ​编辑VFIO-PCI加载 ​编辑VFIO-PCI驱动绑定 ​编辑dpdk…

数字乡村智慧乡镇整体规划设计解决方案

1. 数字乡村的重要性 数字乡镇作为乡村振兴战略的一部分&#xff0c;通过信息化手段提高农业农村现代化水平&#xff0c;是建设数字中国的重要内容&#xff0c;对保障扶贫成果、促进乡村治理体系和治理能力现代化具有基础支撑作用。 2. 乡镇政府和农户面临的问题 乡镇政府和…

Python内存管理与泄漏排查实战

Python内存管理与泄漏排查实战 Python作为一种高级编程语言&#xff0c;因其易读性和丰富的标准库而备受开发者青睐。然而&#xff0c;随着项目的复杂度增加&#xff0c;内存管理问题可能会影响程序的性能&#xff0c;甚至导致内存泄漏。为了构建健壮且高效的应用程序&#xf…

python爬虫 - 初识爬虫

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、爬虫的关键概念 &#xff08;一&#xff09;HTTP请求与响应 &#xff0…

软件工程-数据流图

数据流图(Data Flow Diagram&#xff0c;DFD)是一种图形化技术&#xff0c;它描绘信息流和数据从输入移动到输出的过程中所经受的变换。 数据流图的设计原则 数据守恒原则&#xff0c;对于任何一个加工来说&#xff0c;其所有输出数据流中的数据必须能从该加工的输入数据流中…

移动应用的界面配置-手机银行APP

设置登录界面为线性布局&#xff0c;组件垂直居中排列设置主页为滚动模式&#xff0c;包括布局、添加背景图片设置按钮样式&#xff0c;包括形状、边框线的宽度和颜色 设置登录界面 设置界面为线性布局&#xff0c;组件垂直居中排列 --android:gravity"center_vertical…