Redis中的常用数据结构

目录

String类型

Hash类型

List类型

Set类型

SortedSet类型

 全局命令

集合中的交并补


String类型

//set,get型set key valueget key//设置一个10s后过期的键值对  ex单位是sset key value ex 10 或者 setex key 10 value//设置一个10ms后过期的键值对  px单位是msset key value px 10 或者 psetex key 10 value//当不存在key时,才可以存储,相当于唯一插入,nx标识set key value nx;  或者 setnx key value;//当存在key时,才可以设置,相当于更新操作,xx标识set key value xx;//一次存储或获取多个key,value,减少网络通信次数,mset,mgetmset key1 value1 key2 value2 key3 value3;mget key1 key2 key3;

加减运算命令

1.针对value为Integer类型

incr key  //加一操作decr key //减一操作incrby key 10   //加10   incrby key -10  //减10  或者使用decrby

2.针对小数

incrbyfloat key 1.1 incrbyfloat key -1.1

Hash类型

相当于一种key key value.

hset,hgethset user id 1hget user idhexists user id  是否存在KKhdel user id user name...  //删除一个或多个KKhkeys user  //查找K对应的所有K(filed)hvals user  //查找KK对应的所有valuehgetall user //查找K对应的所有key-value键值对hmset ,hmget //一次设置或查找多个Hash类型的键值对hmset user id 1 username lisi password 111hmget user id username password   //得到多个valuehlen user //获取指定哈希表中键值对的个数   hsetnx user id      //即id这个filed不存在才能插入//对hash表中的value进行加减运算hincrby user id 1 //针对Integer类型hincrbyfloat user money  1.1   //针对小数类型hstrlen user id  //获取value的长度

List类型

本质上是数组,顺序表,redis中的list对数组提供了头插(lpush),头删(lpop),未插(rpush),尾删(rpop)。更像是一个双端队列。使用下标进行操作,元素可以重复,有顺序。

lpush key value1 value2 ...  //头插lrange id 0 -1 //查找列表id的所有value 范围查找, -1 表示最后一个元素  lindex key 0  //查找下标为0的valuelinsert id before/after 2 10   ///在2的前面或后面插入一个10 如果指定的元素在list中是有多个的。则linsert会从左到右找到第一个元素进行操作。lpushx,rpushx //当指定List数组存在时,才能插入lrem id 5 1  //删除元素1,并且删除个数为5个。删除指定元素及元素的个数 List是可以重复的5的正负代表删除的方向,正数是从左到右找并删除,负数是从右到左找并删除。ltrim id start end //截取并更新原value,闭区间lset id 2 10 //将下标为2的元素更新为10 下标越界会报错llen id //获取指定列表中元素的个数

blpop  brpop 带有阻塞性质的出队操作。

在列表有元素的情况下,和lpop,rpop表现是一样的。但如果列表中没有元素,非阻塞版本会立即返回nil,阻塞版本会等待阻塞一段时间timeout,若list中还是没有添加新的元素,才会返回nil。若在等待时间内有了新元素,则会立即返回,解除等待。并且阻塞期间也是可以执行其他命令。当 list 处于阻塞时,这时有多个客户端访问命令,后面list添加新元素了,会先来先到。

并且这个超时等待时间是可以代码手动设置的,如下,获取过期时间为60s

blpop id 60 即pop之前没有元素,会阻塞等待60s,60s内有元素进来,则弹出去,没有就返回空。

Set类型

Set集合中的元素具有唯一性,无序性

sadd id 1 2 3 4 5... //向id集合中插入多个元素 元素若重复,只插入一个smembers id     //查看id集合中所有的元素sismember id 1   //查看id集合中元素1是否存在spop [count]  //删除count个元素的个数srandmember key [count]  //随机从集合中返回一个或多个元素。smove key1 key2 member  //将一个元素member从集合key1中移动到key2中,具体过程是key1中删除这个元素,key2中添加这个元素。srem key member1,member2... //从集合中一次性删除一个或多个元素scard key //得到指定集合中元素的个数

SortedSet类型

有序集合,引入了score属性,就是按照这个分数进行排序(升序),元素有序,不重复

 zadd key [NX|XX] [CH] [INCR] score member [score member ...]  可以一次性插入多个

XX:更新操作,该元素之前存在才操作

NX:插入操作,即该元素之前不存在才操作

INCR: 修改元素对应的分数做加法/减法运算

zrange key 0 -1 [withscores]  //查找范围内的元素,有withscores还会返回对应的分数zrevrange key 0 -1 [withscores] //同上,逆序输出。即降序。zcard key //获取集合中所有元素的个数zcount key minscore maxscore //通过一个分数区间,返回在区间内的member个数,闭区间若想要开区间,加左括号 zcount key (minscore (maxscorezrangebyscore key minscore maxscore //同上,也是指定一个分数区间,但返回值不同,返回的是集合的元素,而非个数zpopmax/zpopmin key count  // 删除并返回分数最高/最低的count个元素。bzpopmax/bzpopmin key timeout //带有阻塞性质的删除元素,超时等待,可以设置超时时间zrank  //获取到指定元素的排名(下标)zrevrank  //也是获取到指定元素的下标zscore key member //根据指定的member查找并返回score分数zrem key member1 member2.. //删除有序集合中的一个或多个元素zremrangebyrank  //指定一个区间(下标),对这个闭区间内的所有元素进行删除zremrangebyscore //同上 指定一个区间(分数score),对这个闭区间内的所有元素进行删除zincrby //给指定的元素member对应的score加一个数字,即修改分数

 全局命令

flushall     //删除所有数据库的所有键值对keys *            //获取所有的keydel key1 key2...  // 删除一个或多个keyexists key       //是否存在keyttl key         // key的存活时间 单位s -1表示不会过期  -2 表示已经过期pttl key        //key的存活时间 单位ms -1表示不会过期  -2 表示已经过期expire key 60       //设置key的存活时间 单位spexpire key 1000     //设置key的存活时间 单位mstype key   //查看key对应的value的类型 如none(查找不存在的key),string,list,set,zset(压缩set),hash,stream(消息队列)等。object encoding key  //查看key对应value的详细数据类型

集合中的交并补

sinter key1 key2 key3 ... //对多个集合求交集 返回交集元素sinterstore destination key1 key2..  //和上面一样也是求交集,不同的是此操作会将交集元素存放在destination这个指定的集合中,返回的是交集元素的个数。sunion key1 key2... //对多个集合求并集 返回并集元素//sinterstore 同上sdiff key1 key2... //对多个集合求差集 返回并集元素//sinterstore 同上

redis中的数据库是现成的,用户自己不能进行创建,也不能删除,默认redis中有16个数据库,编号0-15,这些数据库之间是相互独立的,我们之前所操作的string,hash,set,zset等都默认是在0号数据库中的。

select 0 表示选择0号数据库。

dbsize 查看当前所在数据库的所有元素个数

flushdb 删除当前数据库的所有元素 工作中禁用

flushall 删除所有数据库中的所有元素 工作中禁用

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

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

相关文章

Vue 面试题(二)

目录 上一篇:Vue 常见面试题(一)-CSDN博客 11、Vue 组件 data 为什么必须是函数(必会) 12、讲一下组件的命名规范(必会) 13、怎么在组件中监听路由参数的变化?(必会) 14、怎么捕获 Vue 组件…

深度学习pytorch——链式法则(Chain rule)(持续更新)

这篇文章将会以深度学习的角度解析链式法则。 基本的求导法则 高中的时候就学过,大学高数也巩固了一遍,这里不再赘述。 深度学习中的链式法则 为什么要讲述深度学习中的链式法则? 通过链式法则,我们可以得到中间层信息&#x…

unbantu Apache的基本配置与配置静态资源访问

目录 前言: 1.Apache介绍 2.安装Apache 3. 测试Apache服务是否启动成功 3.1配置Servername 3.2重启服务 4.配置Apache主页面 5. 配置静态的资源 6.为静态资源设置访问权限(基于源地址) 致谢: 前言: 此博客是基于unbantu的Apache服务的详细解析,在这片博…

Elasticsearch面试系列-03

1. Elasticsearch 中 refresh 和 flush 有什么区别? 整体流程: 1、数据写入buffer缓冲和translog日志文件中。当写一条数据document的时候,一方面写入到mem buffer缓冲中,一方面同时写入到translog日志文件中。 2、buffer满了或者每隔1秒(可配),refresh将mem buffer中的…

MediatR 框架使用FluentValidation对Comand/Query进行自动拦截验证

简介 目录 简介 1. MediatR项目框架 2. 实现步骤 步骤 1:编写管道行为 1. query 查询的管道 2. command命令的管道 步骤 2:注册验证器和管道行为 步骤 3:定义命令类 步骤 4:定义处理程序 步骤 5:编写命令验证器…

34 | 到底可不可以使用join?

在实际生产中,关于 join 语句使用的问题,一般会集中在以下两类: 1. 我们 DBA 不让使用 join,使用 join 有什么问题呢? 2. 如果有两个大小不同的表做 join,应该用哪个表做驱动表呢? 今天这篇文…

机器学习流程—迁移学习 模型微调

文章目录 机器学习流程—迁移学习 模型微调迁移学习的思想主要优点常见的微调 fine-tuning案例一 VGG19鲜花分类器案例二 ResNet图像分类案例三 BERT 情感分析总结机器学习流程—迁移学习 模型微调 一旦你踏进了机器学习领域,就等同于踏进了“终身学习”之旅。因为机器学习领…

【算法刷题 | 二叉树 02】3.21 二叉树的层序遍历01(5题:二叉树的层序遍历、层序遍历||、右视图、层平均值,以及N叉树的层序遍历)

文章目录 5.二叉树的层序遍历5.1 102_二叉树的层序遍历5.1.1问题5.1.2解法:队列 5.2 107_二叉树的层序遍历||5.2.1问题5.2.2解法:队列 5.3 199_二叉树的右视图5.3.1问题5.3.2解决:队列 5.4 637_二叉树的层平均值5.4.1问题5.4.2解决&#xff1…

.NET Core 服务实现监控可观测性最佳实践

前言 本次实践主要是介绍 .Net Core 服务通过无侵入的方式接入观测云进行全面的可观测。 环境信息 系统环境:Kubernetes编程语言:.NET Core ≥ 2.1日志框架:Serilog探针类型:ddtrace 接入方案 准备工作 DataKit 部署 DataK…

探索神经网络:从前端开发者的视角看AI技术

在当今数字化时代,人工智能(AI)技术正在以惊人的速度发展,并在各个领域展现出巨大的潜力和影响力。其中,神经网络作为AI领域的核心技术之一,引起了广泛的关注和研究。作为一名前端开发人员,了解…

css设置文字在图片上面显示(使用Position及引入背景图片(background-image: url(path)))

<div class"container"><img src"image.jpg" alt"背景图片"><div class"h-title">这里是文字</div><div class"config-title">这里是文字2</div> </div>方法一&#xff1a;使用绝…

Nodejs运行vue项目时,报错:Error: error:0308010C:digital envelope routines::unsupported

前端项目使用( npm run dev ) 运行vue项目时&#xff0c;出现错误&#xff1a;Error: error:0308010C:digital envelope routines::unsupported 经过探索&#xff0c;发现问题所在&#xff0c;主要是nodeJs V17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制&#…

4核16G服务器租用优惠价格,26.52元1个月,半年149元

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年&#xff0c;配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge&#xff0c;4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…

Go语言介绍

Go语言介绍 Go语言&#xff0c;又称Golang&#xff0c;是由Google公司开发的一种静态类型、编译型的开源编程语言。自2009年发布以来&#xff0c;Go语言凭借其简洁的语法、强大的并发处理能力和出色的跨平台性能&#xff0c;迅速在编程界崭露头角&#xff0c;成为众多开发者的…

ZHUTI主提2024夏季系列 —「逐·行」

ZHUTI主提全新发布2024夏季「逐行」系列&#xff0c;聚焦当下人与自然的关系&#xff0c;以衣为载体&#xff0c;秉承东方哲学的艺术理念&#xff0c;将美学艺术与主流时尚设计融合&#xff0c;赋予当代时装表达新方向&#xff0c;共创现代女性之美。 取自然之意境&#xff0c…

list.sort()Collections.sort()深入理解

list.sort()&&Collections.sort() 文章目录 list.sort()&&Collections.sort()背景相关代码代码一代码二 原理举一反三 业务场景考虑 背景 业务中经常用到List的sort()方法&#xff0c;但是对于其中return的-1&#xff0c;0&#xff0c;1理解不到位&#xff0c…

蓝桥杯 2022 省B 李白打酒加强版

这题用递归暴力的方法如下&#xff1a; #include<iostream> #include<bits/stdc.h> using namespace std; int num; int N,M; void dfs(int now,int n,int m) {if(now<0 || n>N ||m>M)return ;if(nN && mM){if(now1)num1;return;}dfs(now-1,n,m1…

微服务day05(下) -- ES文档操作 + RestApi + RestClient操作文档

3.1.新增文档 语法&#xff1a; POST /索引库名/_doc/文档id {"字段1": "值1","字段2": "值2","字段3": {"子属性1": "值3","子属性2": "值4"},// ... } 示例&#xff1a; # 插…

内网使用rustdesk进行远程协助

文章目录 前言一、搭建rustdesk中继服务器二、搭建文件下载服务器三、创建引导脚本四、使用 前言 内网没有互联网环境&#xff0c;没法使用互联网上有中继服务器的远程协助工具&#xff0c;如teamviewer、todesk、向日癸等&#xff1b;在内网进行远程维护可以自己搭建中继服务…

网络基础「HTTP」

&#x1f52d;个人主页&#xff1a; 北 海 &#x1f6dc;所属专栏&#xff1a; Linux学习之旅、神奇的网络世界 &#x1f4bb;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 1.再谈协议1.1.认识URL1.2.Encode 和 Decode 2.HTTP 协议2.1.协议格式2.2.见一见请求2.…