Redis的使用(二)redis的命令总结

1.概述

这一小节,我们主要来研究一下redis的五大类型的基本使用,数据类型如下:

redis我们接下来看一看这八种类型的基本使用。我们可以在redis的官网查询这些命令:Commands | Docs,同时我们也可以用help 数据类型查看命令的帮助文档。

2. 常用命令的使用

可以用help generic查看一些基本命令的使用

2.1 查看redis中所有的key

KEYS pattern

比如:
KEYS user    //查看key为user的数据
KEYS *user*  //查看包含user的key

注:该命令会扫描redis里面所有的key,不建议在生产上使用。

2.2 删除指定的key

Del key1 key2 key3

2.3 判断某个key是否存在

EXISTS key

2.4 给key设置一个过期时间

EXPIRE key

2.5 更换库

select 库的编号

3. string类型

3.1 基本操作

3.1.1 增加一个1字符串

set key value

3.1.2 设置key以及超时时间

set key value ex 时间(单位秒)

3.1.3 不存在才能插入key

set key value nx

3.1.4 根据key获取字符串

get key

3.2 批量操作

3.2.1 更新多个key

mset key1 v1 key2 v2

3.2.2 获取多个key

mget key1 key2

3.3 数值操作

3.3.1 递增

incr key 

3.3.2 递减

decr key

3.3.3 增加某个数值

incrby key 数值

3.3.4 减少一个数值

decrby key 数值

3.4 复合操作

3.4.1 获取值后再更新

getset key value

3.4.2 不存在才能更新

setnx key value

3.4.3 更新值和超时时间

setex key 时间 value 

3.4.4 获取值后删除

getdel key

3.5 子字符串操作

3.5.1 获取key中字符串长度

strlen key

3.5.2 获取子字符串

getrange key 开始位置 结束位置

4. hash类型

4.1 基本操作

4.1.1 左侧依次插入多条元素

lpush key v1 v2

4.1.2 右侧插入多条元素

rpush key v1 v2

4.1.3 左侧弹出多个元素

lpop key 元素个数

4.1.4 右侧弹出多个元素

rpop key 元素个数

4.1.5 查看元素个数

llen key

4.1.6 查看list中的某个区间内的元素

lrange key 开始位置 结束位置

注意:lrange key 0 -1 表示查看list中所有数据 & 开始位置从0开始

4.1.7 根据索引获取某个元素

lindex key 索引

4.1.8 查找某个元素的位置

lpos 元素

4.2 阻塞队列

   在获取元素的时候,会一直等待,知道有元素返回或者超时,才会被唤醒,其实就是阻塞队列。

4.2.1 左侧插入元素

blpush key v1 v2

4.2.2 右侧插入元素

brpush key v1 v2

4.2.3 左侧弹出元素(可以监听多个list)

blpop key1 key2 超时等待时间

4.2.4 右侧弹出元素(可以监听多个list)

brpop key1 key2 超超时等待时间

4.3 复合操作

4.3.1 弹出key1左侧元素并从左侧插入到key2

lpushlpop key1 key2

4.3.2 左侧弹出key1左侧元素并从右侧插入到key2

lpushrpop key1 key2

4.3.3 弹出key1右侧元素并从左侧插入到key2

rpushlpop key1 key2

4.3.4 弹出key1右侧元素并从右侧插入到key2

rpushrpop key1 key2

4.3.5 从key1某侧弹出多个元素并放入到key2

lmove key1 key2 元素从哪边弹出(left/right) 元素从哪边插入(left/right)

注意:该命令为高版本命令

5. hash类型

5.1 基本操作

5.1.1 设置hash的某个key的某个field的值

hset key field value

5.1.2 获取hash的某个key的某个field的值

hget key field

5.1.3 判断某个key中的某个field是否存在

hexists key field

5.1.4 如果某个key中的某个field不存在才能插入

hsetnx key field value

5.1.5 删除某个key的某个field

del key field

5.2 递增操作

hash里面也可以存储数值

5.2.1 增加整数

hincrby key 整数

5.2.2 增加小数

hincrbyfloat key 小数

5.3 批量操作

5.3.1 查看hash中的所有key和value

hgetall key

5.3.2 查看所有key

hkeys key

5.3.3 查看所有的value

hvals key

注意:上面三个命令不能再生产上面随便使用,会阻塞redis。

5.3.4 查看redis中部分数据

hscan key cursor 

注意:hscan 会将一个hash拆成多份内容,一次返回其中一份,这样就不会阻塞redis

6. set类型

6.1 基本操作

6.1.1 添加多个元素到set

sadd key val1 val2

6.1.2 获取set中所有元素

smembers key

6.1.3 判断元素是否在set里

sismember key val

6.1.4 获取set元素个数

scard key

6.1.5 随机从set中获取一个元素

spop key

6.1.6 把一个元素从一个set挪到另一个set

smove key1 key2 val

6.1.7 从集合中删除多个元素

srem key val1 val2

6.2 集合操作

6.2.1 求两个集合交集

sinner key1 key2

6.2.2 求两个集合差集

sdiff key1 key2

6.2.3 求两个集合并集

sunion key1 key2

7. sorted set类型

sorted set相当于java中的hashset,只是它是按照score进行排序。

7.1 基本操作

7.1.1 添加元素

zadd key score1 val1 score2 val2

7.1.2 查询元素个数

zcard key

7.1.3 查询元素的score1到score2 范围内的个数

zcount key score1 score2

7.1.4 查询元素的score

zscore key

7.1.5 查询元素排在第几位

zrank key val1

7.1.6 增加元素的分数

zincrby key 增加的分数 val

7.1.7 弹出score最大的元素

zpopmax key

7.1.8 弹出score最小的元素

zpopmin key

7.1.9 打印score在某个范围内的元素

zrange key score1 score2 byscore withscores

7.1.10 查看某个元素的排名

zrank key val

7.2 集合操作

7.2.1 交集

zinter key1 key2

7.2.2 差集

zdiff key1 key2

7.2.3 并集

zunion key1 key2

8. bitmap类型

8.1 基本操作

8.1.1 设置某位的值

setbit key offset val

8.1.2 获取某位的值

getbit key offset

8.1.3 统计1的个数

bitcount key 开始位置 结束位置

8.1.4 位运算

bitop (or/and/xor/not) destkey key1 key2

8.1.5 查找第一个出现该位元素的位置

bitpos key 元素值 开始位置 结束位置

9. geo类型

9.1 基本操作

9.1.1 添加地理元素

GEOADD key longitude latitude member [longitude latitude member ...]

9.1.2 返回元素的经纬度

geopos key member1 member2

9.1.3 返回两点间的距离

GEODIST key member1 member2 [m|km|ft|mi]

10. HyperLogLog类型

hyperLogLog主要是用来统计一堆元素的基数的数据类型,基数就是这堆元素里面不重复的元素个数。

10.1 基本操作

10.1.1 添加元素

pfadd key val1 val2

10.1.2 统计基数个数

pfcount key 

10.1.3 合并两个hyperLogLog

pfmerge destkey key1 key2

11. 总结

本文主要是介绍redis的五大数据类型和三中扩展类型的基本使用,无外乎增删改查再加上集合之间操作。

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

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

相关文章

opencascade AIS_InteractiveContext源码学习7 debug visualization

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

【问题已解决】Vue管理后台,点击登录按钮,会发起两次网络请求(竟然是vscode Compile Hero编译插件导致的)

问题 VueElement UI 做的管理后台,点击登录按钮,发现 接口会连续掉两次,发起两次网络请求,但其他接口都是正常调用的,没有这个问题,并且登录按钮也加了loading,防止重复点击,于是开…

JavaMySQL 学习(基础)

目录 Java CMD Java发展 计算机存储规则 Java学习 switch新用法(可以当做if来使用) 数组定义 随机数 Java内存分配 MySQL MySQL概述 启动和停止 客户端连接 数据模型 关系型数据库 SQL SQL通用语法 SQL分类 DDL--数据定义语言 数据库…

浏览器开发者工具辅助爬虫开发

文章目录 浏览器开发者工具辅助爬虫开发打开开发者工具使用Network面板分析请求数据示例步骤: 使用Elements面板查看和修改DOM结构示例步骤: 使用Console面板调试JavaScript代码示例步骤:示例代码:1. 输出日志信息2. 输出对象信息…

左值右值, 左值引用右值引用,完美转发

一. 左值和右值 左值: 可以取地址的对象 右值: 不可以取地址的对象 double x1.0, y 2.0; 1; // 字面量, 不可取地址, 是右值 x y; // 表达式返回值, 不可取地址, 是右值 max(x, y); // 传值返回函数的返回值 (非引用返回)总结就是: 根据是否可以取地址来区分是左值还…

线程池666666

1. 作用 线程池内部维护了多个工作线程,每个工作线程都会去任务队列中拿取任务并执行,当执行完一个任务后不是马上销毁,而是继续保留执行其它任务。显然,线程池提高了多线程的复用率,减少了创建和销毁线程的时间。 2…

Ubuntu开通5005端口 记录

Ubuntu版本:20.04 使用systemctl status firewalld查看防火墙状态,报错Unit firewalld.service could not be found 报错的原因是没有安装firewall,安装命令为sudo apt install firewalld,然后进行安装 安装完成后输入systemctl…

vscode jupyter选择Python环境时找不到我安装的Python

在一些情况下,我们需要自己安装一个Python,在选择内核是可能找不到指定的Python版本, 再次打开内核选择页面就能看到Python环境了 注意先到指定环境下安装依赖包: ./python3 pip install ipykernel notebook jupyter

人工智能-NLP简单知识汇总01

人工智能-NLP简单知识汇总01 1.1自然语言处理的基本概念 自然语言处理难点: 语音歧义句子切分歧义词义歧义结构歧义代指歧义省略歧义语用歧义 总而言之:!!语言无处不歧义 1.2自然语言处理的基本范式 1.2.1基于规则的方法 通…

[DataWhale大模型应用开发]学习笔记1-尝试搭建向量数据库

1.词向量 1.定义 词向量(Word Vector)是将单词表示为向量形式的技术,是自然语言处理(NLP)中的一种常用方法。通过将单词转化为向量,计算机能够更好地理解和处理语言。简单来说,词向量就是将单…

Windows系统安装NVM,实现Node.js多版本管理

目录 一、前言 二、NVM简介 三、准备工作 1、卸载Node 2、创建文件夹 四、下载NVM 五、安装NVM 六、使用NVM 1、NVM常用操作命令 2、查看NVM版本信息 3、查看Node.js版本列表; 4、下载指定版本Node.js 5、使用指定版本Node.js 6、查看已安装Node.js列…

【区块链+基础设施】国家健康医疗大数据科创平台 | FISCO BCOS应用案例

在医疗领域,疾病数据合法合规共享是亟待解决的难题。一方面,当一家医院对患者实施治疗后,若患者转到其 他医院就医,该医院就无法判断诊疗手段是否有效。另一方面,医疗数据属于个人敏感数据,一旦被泄露或被恶…

一个能让渲染性能提高100倍的办法

GPU 光线追踪是当今的热门话题,所以让我们来谈谈它!今天我们将光线追踪一个单个球体。 使用片段着色器。 是的,我知道。并不特别花哨。你可以在 Shadertoy 上搜索并获得数百个示例(https://www.shadertoy.com/results?querysphere)。甚至已…

自研直播系统-直播系统实战

文章目录 1 流媒体基础本文教程下载地址1.1 流媒体1.2 流式传输方式1.2.1 顺序流式传输1.2.2 实时流式传输 1.3 流媒体传输协议1.3.1 rtmp协议1.3.2 HLS协议1.3.3 RTSP协议1.3.4 视频流的对比 1.4 视频编码(codec)1.5 分辨率的规范分辨率簡介:1.5.2 分辨率單位 1.6 …

聊聊etsy平台,一个年入百万的项目

聊聊etsy平台,一个年入百万的项目 什么是etsy,这是怎样一个平台,怎样盈利的?相信现在大家满脑子都是这些疑问。 这个平台也是无意间一个学员提到的,据说他朋友靠这个平台年赚好几百万。苦于门槛太高,他也做不了。今天…

重磅发布|WAIC 2024最新活动日程安排完整发布!

WAIC 2024 将于 7 月在上海世博中心和世博展览馆举行,论坛时间为 7 月 4 日至 6 日,展览时间为 7 月 4 日至 7 日。会议涵盖 AI 伦理治理、大模型、具身智能、投融资、教育人才等重点话题,体现 AI 向善等价值导向,9 位大奖得主和 …

Inscription Alliance的Denim协议发行首个聚合跨链铭文BTIA,计划参与Mint注册量达15万

官方消息,由Inscription Alliance自主研发的创新性Denim协议发行首个聚合跨链铭文BTIA,并将于2024年7月19日公开Mint。Denim协议旨在解决当下铭文赛道流动性和互通性不足的痛点,基于该协议搭建的Denim Swap可以实现聚合各项协议和各条公链的彼…

数据结构常见图算法

深度优先搜索 时间复杂度 领接矩阵表示 O( n2) 领接表表示 O(n+e) 空间复杂度 O(e) DFS与回溯法类似,一条路径走到底后需要返回上一步,搜索第二条路径。在树的遍历中,首先一直访问到最深的节点,然后回溯到它的父节点,遍历另一条路径,直到遍历完所有节点…

荣耀大横评,睿蓝7-450荣耀版卷出来的性价比之王

手握11万左右预算,如何在市场内选出一辆合适自己的车?荣耀版车型无疑是当下的最佳答案。在众多荣耀版车型中,比亚迪宋PLUS荣耀版EV520km领先型(后统称宋PLUS荣耀版)、比亚迪元PLUS荣耀版430km领先型(后统称元PLUS荣耀版)、比亚迪海豚PLUS荣耀版420km时尚版(后统称海豚荣耀版)、…

【CSAPP】-binarybomb实验

目录 实验目的与要求 实验原理与内容 实验设备与软件环境 实验过程与结果(可贴图) 操作异常问题与解决方案 实验总结 实验目的与要求 1. 增强学生对于程序的机器级表示、汇编语言、调试器和逆向工程等方面原理与技能的掌握。 2. 掌握使用gdb调试器…