Redis 常用命令以及结构

目录

1、目的

2、分析  

2.1 String (字符串)

2.2 List(列表)

在右侧插入数据

获取,返回列表里指定元素。

获取索引为N的元素

设置指定索引位置的元素值

2.3 Hash (哈希)

Redis---Hash 底层结构介绍

设置hash 值

删除Hash 值

2.4 ZSET

1、添加 先写权重,可更新覆盖

获取键zset 的集合中所有元素:

列出所有元素以及 他们对应的score

返回score 值在 min 和 max 之间的成员

返回成员member 的score 值

统计分支范围内的元素个数 [默认指闭区间]

获取对应的下标值

删除

2.5 SET


1、目的

     梳理了redis 的相关结构,以及其对应的用法。

2、分析  

     

2.1 String (字符串)

string 类型是redis 最近的类型,一个key 对应一个value

Redis 中String 类型是二进制安全的 ,可以包含任何数据,例如序列化的对象或者图片

String 类型一个键最大能存储 512M

Redis 中对String 类型的赋值命令是SET, 取值命令是GET

set myKey "testString"
​
get myKey

通过set 命令,加入key 为mykey,对应的值为testString 的缓存数据

2.2 List(列表)

Redis 列表类型是最简单的字符串列表啊,按照插入的顺序排序

每个List 最多存储 2^32-1 个元素(40多亿)

List 是简单的字符串列表,按照插入顺序进行排序,你可以添加一个元素到列表的头(左边) 或者尾部 (右边) ,底层是一个双向列表,对两端操作性能极高,通过索引操作中间的节点性能比较差

列表的元素类型为string

按照插入顺序排序

使用场景:

消息队列

排行榜

最新列表

Redis 中List 类型通过Push 命令赋值,通过lrang 命令取值

lpush test-list Java
​lpush test-list PHPlrange test-list  0 5 

key 值为test-list ,存入的 value 值分别为java PHP C++

在右侧插入数据

从右边(尾部) 插入一个或者多个值

rpush key value1 value2 ...
获取,返回列表里指定元素。

返回key 列表中的start 和end 之间的元素(包含start 和end ) 其中 0 表示列表中第一个元素, -1 表示最后一个元素

lrange key start stop

start stop 为元素的下标索引。索引从左侧开始,第一个元素为0,索引可以是负数,表示从尾部开始计数,如 -1 表示最后一个元素

获取索引为N的元素

获取列表imdex 位置的值(从左开始)

lindex key index

设置指定索引位置的元素值

将索引为index 的值设置为value

索引从左侧开始,第一个元素为0。 索引可以是负数,表示尾部开始计数,如 -1 表示最后一个元素

lset key index value

修改键为a1的列表中下标为1的元素值为z:

lset a1 1 z

2.3 Hash (哈希)

Redis 的hash 是一个键值对集合,特别适合用于存储对象

每个hash 最多可存储 2^32 - 1 个元素(40多亿)

Redis 中的hash 类型通过HMSET 命令赋值, H

Redis---Hash 底层结构介绍

Redis 的hash 类型的底层实现是一个非常优化的数据结构,它会根据实际情况选择使用紧凑的压缩列表(zipList) 或者 散列表(hashtable) 作为底层 实现。

设置hash 值

Redis 中设置 Hash 值的命令是HSET

HSET key field value

其中,key 是哈希表的名称,field 是哈希表中的字段名,value 是字段对应的值,如果哈希表中原本不存在该字段,则会创建 一个新的字段,并将其值设置为指定的值,如果该字段已经存在, 则会覆盖原有的值。

例如,我们可以使用以下命令设置一个 user:1001 的哈希表中的字段 name 的值Alice :

HSET user:1001 name Alice

如果需要设置多个字段值,可以使用HMSET 的命令,它的语法如下:

HMSET key field1 value1 [field1 value2 ...]

例如,我们可以使用以下命令同时设置user:1001 哈希表中的name 和age 字段的值

HMSET user:1001 name Alice age 25

这样就可以一次性设置多个字段的值了

在Redis中获取Hash 值的命令是HGET ,它的语法如下:

HGET key field

其中,key 是哈希表的名称,field 是哈希表中的字段名

例如,我们可以使用以下命令获取一个名为user:1001 的哈希表中的字段name 的值:

HGET user:1001 name

如果需要获取哈希表中的多个字段值,可以使用HMGET 命令,它的语法如下:

HMGET key field1 [field2 ...]

例如,我们可以使用以下命令获取 user:1001 哈希表中的name 和 age 字段的值:

HMGET user:1001  name age

如果需要获取哈希表中所有的字段和值,可以使用HGETALL 命令,它的语法如下:

HGETALL key

例如,我们可以使用以下命令获取 user:1001 哈希表中的所有字段和值

HGETALL user:1001
删除Hash 值

在 Redis 中,删除Hash 值命令是HDEL ,它的语法如下:

HDEL key field [field ...]

其中, key 是哈希表的名称, field 是要删除的字段名,你可以一次删除一个或者多个字段。

例如,我们可以使用如下 命令删除一个名为user:1001 的哈希表中的字段 name:

HDEL user:1001 name

或者

HDEL user:1001 name age

这个命令会删除 user:1001 哈希表中的name 和age 字段

需要注意的是,HDEL 命名只会删除指定的字段以及其值, 而不会删除整个哈希表,如果你想要删除整个哈希表,可以使用 DEL 命令,例如

DEL user:1001

这个命令会删除 user:1001 哈希表

2.4 ZSET

集合的元素是唯一的,但是分数可以重复。

① 元素为string 类型

② 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序

1、添加 先写权重,可更新覆盖

将一个或者多个元素(value ) 以及分数(score) 加入到有序集合key中

zadd key score1 member1 score2 member2 ...

向键zset 的集合中添加元素test1 ,test2 ,test3 权重分别为 4, 5 ,3

zadd zset 4 test1 5 test2 3 test3

如果某个元素已经是有序集的元素,那么更新这个元素的分数值,并通过重新插入这个元素来保证该元素在正确的位置上。

分数值可以是整数值或者双精度浮点数

如果有序集合key 不存在,则创建一个空的有序集合并执行zadd操作

获取键zset 的集合中所有元素:
zrange  key start stop 

获取键值zset 的集合中所有元素

zrange zset 0 -1

列出所有元素以及 他们对应的score
zrange key start end withscores 

其中 0 表示列表的第一个 元素, -1 表示最后一个元素。 withScores 是可选参数,是否返回分数

zrange zset 0 -1 withscores 

返回score 值在 min 和 max 之间的成员

zrangescore key min max

获取键zset 的集合中权限值在 5和 6 之间的成员:

zrangebyscore zset 5 6

返回成员member 的score 值
zscore key member 

获取键zset 的集合元素 zhangsan的权重

zscore zset zhangsan

统计分支范围内的元素个数 [默认指闭区间]

统计该集合在Minscore 到maxscore 分数区间中元素的个数

zcount zset 4 5

获取对应的下标值

返回value 在集合中的排名,从0开始

zrank zset lisi

删除

删除指定元素

删除钙元素下value 的元素

zrem key member1 member2 ...

删除集合zset 中元素zhangsan:

zrem zset zhangsan

删除权重在指定范围的元素 [包括最小值和最大值]

zremrangebyscore key min max

删除集合zset 中权限在 5 ,6 之间的元素

zremrangebyscore zset 5  6

2.5 SET

redis 中set 是String 类型的无序集合,它的底层其实是一个value 为null 的hash 表,所以,添加 , 删除 查找的复杂度都是 O(1)

sadd key value1 value2 添加一个或者多个元素到集合中

smembers <key> 取出该集合的所有值

scard <key> 返回该集合的元素个数

srem <key> <value1> <value> 删除集合中 的某几个元素

spop <key> 随机从该集合吐出一个元素

sdiff <key1> <key2> 返回两个集合中的差集元素(key1 中的,不包含key2 的)

sunion <key1> <key2> 返回两个集合并集元素

sinter <key1> <key2> 返回两个集合的交集元素

srandmember <key> <n> 随机从该集合中取出n个值,不会从集合中删除

smove <source> <desctination> <value> 把集合中一个值从一个集合移动到另外一个集合

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

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

相关文章

PyQt qrc2py 使用PowerShell将qrc文件转为py文件并且将导入模块PyQt或PySide转换为qtpy模块开箱即用

前言 由于需要使用不同的qt环境&#xff08;PySide&#xff0c;PyQt&#xff09;所以写了这个脚本&#xff0c;使用找到的随便一个rcc命令去转换qrc文件&#xff0c;然后将导入模块换成qtpy这个通用库(支持pyside2-6&#xff0c;pyqt5-6)&#xff0c;老版本的是Qt.py(支持pysi…

【力扣每日一题】1026. 节点与其祖先之间的最大差值

LC 1026. 节点与其祖先之间的最大差值 题目描述 给定二叉树的根节点 root&#xff0c;找出存在于 不同 节点 A 和 B 之间的最大值 V&#xff0c;其中 V |A.val - B.val|&#xff0c;且 A 是 B 的祖先。 &#xff08;如果 A 的任何子节点之一为 B&#xff0c;或者 A 的任何子…

算法刷题Day23 | 回溯算法基础理论、 77. 组合

目录 0 引言1 回溯算法基础理论1.1 回溯算法模板1.2 2 组合2.1 我的解题2.2 剪枝操作 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;算法刷题Day23 | 回溯算法基础理论、 77. 组合❣️ 寄语&#xff1a;书…

贪心算法|455.分发饼干

力扣题目链接 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int index s.size() - 1; // 饼干数组的下标int result 0;for (int i g.size() - 1; i > 0;…

简约好用的TCPUDP小工具

csdn下载地址&#xff1a; https://download.csdn.net/download/a876106354/89077745

SSL/TLS协议

SSL 与 TLS — 通信协议之间的区别 — AWS 【ssl认证、证书】SSL双向认证和SSL单向认证的区别(示意图)_ssl单向认证和双向认证的区别-CSDN博客 什么是SSL和TLS-SSL和TSL的工作原理-SSL和TSL的概念-华为云 获取 SSL/TLS 证书 | EMQX 文档

木棍【dfs搜索优化】

木棒 题目描述 输入样例&#xff1a; 9 5 2 1 5 2 1 5 2 1 4 1 2 3 4 0输出样例&#xff1a; 6 5【思路】 优化 【AC代码】 #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N 70;int w[N], sum, length,…

阿里云邮件服务器多少钱?邮件服务器租用费用

阿里云邮件服务器租用费用&#xff0c;2核2G3M带宽99元一年、2核4G4M服务器199元一年&#xff0c;不只是云服务器ECS&#xff0c;还可以选择轻量应用服务器。 0、在阿里云CLUB中心领取 aliyun.club 当前最新的优惠券和服务器报价单 1、阿里云服务器ECS经济型e实例&#xff0c;2…

【BPNN】BP神经网络代码

主代码 function main() clc clear close all %% 1.原始数据 %输入 SR1[20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 ...41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63]; SR2[0.6 0.75 0.85 0.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25…

eNSP配置命令笔记

配置命令 一、基本命令二、静态路由 参考博文&#xff1a;博文1、博文2 一、基本命令 undo terminal monitor //在用户视图执行&#xff0c;关闭终端的告警或日志显示 system-view //进入系统视图,简化sys sysname <name> //修改设备名称interface <接口名(g0/0/…

专题三——二分算法

目录 原理 模板 朴素二分算法 非朴素二分算法 一二分查找 二在排序数组中查找元素的第一个和最后一个位置 三点名 四x的平方根 五搜索插入位置 六山脉数组的峰顶索引 七寻找峰值 八寻找旋转排序数组中的最小值 原理 定义两个指针&#xff1a;left指向数组第一个元…

如何看到 synchronized 背后的“monitor 锁”?

Java全能学习+面试指南:https://javaxiaobear.cn 获取和释放 monitor 锁的时机 我们都知道,最简单的同步方式就是利用 synchronized 关键字来修饰代码块或者修饰一个方法,那么这部分被保护的代码,在同一时刻就最多只有一个线程可以运行,而 synchronized 的背后正是利用 …

ACWing: 1049 大盗阿福

#暴力bfs&#xff1a; """ 题目描述 阿福是一名经验丰富的大盗。趁着月黑风高&#xff0c;阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N家店铺&#xff0c;每家店中都有一些现金。 阿福事先调查得知&#xff0c;只有当他同时洗劫了两家相邻的店铺时&…

Redis -- 缓存雪崩问题

缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 可能原因 : 同一时间大量的key到期 ; 解决方案&#xff1a; 给不同的Key的TTL添加随机值 利用Redis集群提高服务的可用性 给缓存业务添加降…

渗透测试靶机----Raven-1

渗透测试靶机----Raven-1 开启靶机&#xff0c;登录窗&#xff0c;平平无奇 开扫&#xff1a; 先看看ip 这里发现192.168.217.166 发现相关服务端口&#xff0c;这里看到80&#xff0c;还是老样子&#xff0c;先80入手打开发现一个熟悉的站点&#xff1a; 这里可以使用漏扫工具…

Python你想要修改文件内容的同时保留原文件的元数据(如创建时间、修改时间等)

在Python中&#xff0c;如果你想要修改文件内容的同时保留原文件的元数据&#xff08;如创建时间、修改时间等&#xff09;&#xff0c;你需要先读取原文件的内容&#xff0c;然后创建一个新的文件写入修改后的内容&#xff0c;同时复制原文件的元数据到新文件上。然而&#xf…

ES学习日记(五)-------插件head安装

接上回,必要的git和node已经装完了,现在开始装head 回到es集群项目里找到plugins(插件文件夹下), 存在安装在plugins启动es报错的情况,报错信息如图一,解决方案就是换个目录,不要放在plugin目录下 git clone https://github.com/mobz/elasticsearch-head.git 打开远程登陆,默…

装饰器深入剖析

装饰器核心 概念 装饰器来自 Decorator 的直译。什么叫装饰&#xff0c;就是装点、提供一些额外的功能。在 python 中的装饰器则是提供了一些额外的功能。 装饰器本质上是一个Python函数&#xff08;其实就是闭包&#xff09;&#xff0c;它可以让其他函数在不需要做任何代码…

【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现

目录 &#x1f31e;一、实验目的 &#x1f31e;二、实验准备 &#x1f31e;三、实验内容 &#x1f33c;1. 认识RMSProp算法 &#x1f33c;2. 在optimizer_compare_naive.py中加入RMSProp &#x1f33c;3. 在optimizer_compare_mnist.py中加入RMSProp &#x1f33c;4. 问…

atoi()函数---使用和模拟实现(详解)

目录 一、前言二、声明三、描述四、参数五、返回值六、使用七、模拟实现 一、前言 二、声明 int atoi(const char *str)三、描述 C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数&#xff08;类型为 int 型&#xff09;需要包含头文件&#xff…