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 查看key的过期时间

TTL 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.rhkb.cn/news/370518.html

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

相关文章

FastAPI教程——部署

部署 部署FastAPI应用程序相对容易。 部署是什么意思 部署应用程序意味着执行必要的步骤以使其可供用户使用。 对于Web API来说,通常涉及将上传到云服务器中,搭配一个性能和稳定性都不错的服务器程序,以便你的用户可以高效地访问你的应用…

Ubuntu安装Docker

一,Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有…

论文回顾 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法

论文速览 | CVPR 2021 | How to Calibrate Your Event Camera | 基于图像重建的事件相机校准新方法 1 引言 在计算机视觉和机器人领域,相机校准一直是一个基础而又重要的问题。传统的相机校准方法主要依赖于从已知校准图案中提取角点,然后通过优化算法求解相机的内参和外参。这…

DDR3(三)

目录 1 预取1.1 什么是预取1.2 预取有哪些好处1.3 结构框图1.4 总结 2 突发2.1 什么是突发2.2 突发与预取 本文讲解DDR中常见的两个术语:预取和突发,对这两个概念理解的关键在于地址线的低位是否参与译码,具体内容请继续往下看。 1 预取 1.1…

创新配置,秒级采集,火爆短视频评论抓取

快速采集评论数据的好处 快速采集评论数据是在当今数字信息时代的市场趋势分析和用户反馈分析中至关重要的环节。通过准确获取并分析大量用户评论,您将能够更好地了解消费者的需求、情感和偏好。集蜂云采集平台提供了一种简单配置的方法,使您能够快速采…

离线安装arm架构Firefox

离线安装Firefox浏览器及其插件在ARM架构的设备上(如树莓派、部分Android设备或其他采用ARM处理器的Linux系统)可能需要一些特殊步骤,因为默认情况下,大多数浏览器和插件都是为x86架构设计的。对于ARM架构,你需要找到特…

Leetcode 338. 比特位计数

给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1 --> 1…

C#/WPF 自制截图工具

在日常使用电脑办公时&#xff0c;我们经常遇到需要截图然后保存图片&#xff0c;我们往往需要借助安装截图工具才能实现&#xff0c;现在我们通过C#自制截图工具&#xff0c;也能够轻松进行截图。 我们可以通过C#调用WindousAPI来实现截图&#xff0c;实例代码如下&#xff1a…

uni-app x 跨平台开发框架

目录 uni-app x 是什么 和Flutter对比 uts语言 uvue渲染引擎 组合式API的写法 选项式API写法 页面生命周期 API pages.json全局配置文件 总结 uni-app x 是什么 uni-app x&#xff0c;是下一代 uni-app&#xff0c;是一个跨平台应用开发引擎。 uni-app x 是一个庞…

计算机网络-IP组播基础

一、概述 在前面的学习交换机和路由协议&#xff0c;二层通信是数据链路层间通信&#xff0c;在同一个广播域间通过源MAC地址和目的MAC地址进行通信&#xff0c;当两台主机第一次通信由于不清楚目的MAC地址需要进行广播泛洪&#xff0c;目的主机回复自身MAC地址&#xff0c;然后…

Linux多进程和多线程(三)进程间通讯-信号处理方式和自定义处理函数

进程间通信之信号 信号信号的种类 信号在操作系统中的定义如下: 信号的处理流程在 Linux 中对信号的处理⽅式 自定义信号处理函数 信号的发送 kill() 函数:raise() 函数: 示例 : 创建⼀个⼦进程&#xff0c;⼦进程通过信号暂停&#xff0c;⽗进程发送 终⽌信号等待信号 pause()…

【鸿蒙学习笔记】@Link装饰器:父子双向同步

官方文档&#xff1a;Link装饰器&#xff1a;父子双向同步 目录标题 [Q&A] Link装饰器作用 [Q&A] Link装饰器特点样例&#xff1a;简单类型样例&#xff1a;数组类型样例&#xff1a;Map类型样例&#xff1a;Set类型样例&#xff1a;联合类型 [Q&A] Link装饰器作用…

深度学习模型加密python版本

支持加密的模型: # torch、torch script、onnx、tensorrt 、torch2trt、tensorflow、tensorflow2tensorrt、paddlepaddle、paddle2tensorrt 深度学习推理模型通常以文件的形式进行保存&#xff0c;相应的推理引擎通过读取模型文件并反序列化即可进行推理过程. 这样一来&#…

MongoDB 单节点升级为副本集高可用集群(1主1从1仲裁)

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG、Mongodb数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享…

leetcode力扣_排序问题

215.数组中的第K个最大元素 鉴于已经将之前学的排序算法忘得差不多了&#xff0c;只会一个冒泡排序法了&#xff0c;就写了一个冒牌排序法&#xff0c;将给的数组按照降序排列&#xff0c;然后取nums[k-1]就是题目要求的&#xff0c;但是提交之后对于有的示例显示”超出时间限制…

基于顺序表的通讯录实现

一、前言 基于已经学过的顺序表&#xff0c;可以实现一个简单的通讯录。 二、通讯录相关头文件 //Contact.h #pragma once#define NAME_MAX 20 #define TEL_MAX 20 #define ADDR_MAX 20 #define GENDER_MAX 20typedef struct PersonInfo {char name[NAME_MAX];char gender[G…

pycharm如何使用jupyter

目录 配置jupyter新建jupyter文件别人写的方法&#xff08;在pycharm种安装&#xff0c;在网页中使用&#xff09; pycharm专业版 配置jupyter 在pycharm终端启动一个conda虚拟环境&#xff0c;输入 conda install jupyter会有很多前置包需要安装&#xff1a; 新建jupyter…

VScode将界面语言设置为中文

1. 点击左侧的扩展图标&#xff0c;打开侧边栏“EXTENSIONS”面板。 2. 在搜索框中输入“Chinese”&#xff0c;查找出“中文简体”插件&#xff0c;点击“install”按钮。 3. 等待插件安装完成&#xff0c;点击右下角“restart”按钮&#xff0c;从而重新启动Vscode。

计算机网络——数据链路层(以太网扩展、虚拟局域网、高速以太网)

在许多情况下&#xff0c;我们希望把以太网的覆盖范围扩展。本节先讨论在物理层把以太网扩展&#xff0c;然后讨论在数据链路层把以太网扩展。这种扩展的以太网在网络层看来仍然是一个网络。 在物理层扩展以太网 现在&#xff0c;扩展主机和集线器之间的距离的一种简单方法就是…

【ARMv8/v9 GIC 系列 1.5 -- Enabling the distribution of interrupts】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 Enabling the distribution of interruptsGIC Distributor 中断组分发控制CPU Interface 中断组分发控制Physical LPIs 的启用Summary Enabling the distribution of interrupts 在ARM GICv3和GICv4体系结构中&#xff0c;中断分发…