【Redis】Redis的类型及相关操作

news2024/11/28 20:54:28

一、常用的key操作命令

keys *
查看当前数据库的键值

ttl key
查看还有多少秒过期,-1表示永不过期,-2表示过期

del / unlink key
同样是删除,unlink是非阻塞删除,del则有可能导致阻塞

select dbindex
切换数据库

flushdb
清空当前库

二、字符串

keepttl
使用set key value导致键值的过期时间被刷新的问题,在这里使用keepttl即可保证键值在被重新赋值的时候不会被刷新过期时间。

mset/mget/msetnx
多值操作,mset一次性设置多个值,mget一次性获取多个值,msetnx只有在n个键都没有设置值的时候才会设置值。

mset k1 v1 k2 v2 k3 v3
mget k1 k2 k3
msetnx k1 v1 k4 v4

getrange/setrange

set k1 abcd1234
GETRANGE k1 0 3
得到结果"abcd"

SETRANGE k1 1 xxyy
get k1
得到结果"axxyy234"

数值增减

INCR key         //  val + 1
INCRBY key x     //  val + x
DECR key         //  val - 1
DECRBY key x     //  val - x

setnx key value
setex(set with expire) / setnx(set if not exists)

三、链表

redis链表底层是一个双端链表,对两端操作性能高,通过索引下表操作中间节点性能较低。

  • lpush / rpush / lrange 左端插入 \ 右端插入 \ 从左到右遍历
  • lpop / rpop 左端弹出 \ 右端弹出
  • lindex / llen 从左往右第index个元素 \ 列表中元素个数
  • lrem key n v1 删除n个值等于v1的元素
  • ltrim key sindex eindex 截取下表sindexeindex的元素赋值给key
  • rpoplpush 列表1 列表2从列表1的右端弹出的元素从左端进入列表2
  • lset key index value 已有值,设置该列表的indexvalue
  • linsert key before / after 已经存在值,插入新值

四、哈希

此时的value也是一个key-value

  • hset/hget/hmset/hmget/hgetall/hdel
  • hlen 获取某个key内的全部哈希对数量
  • hexists key在key里面的某个值的key是否存在
  • hkeys/hvalskey里面所有哈希对的键/key里面所有哈希对的值
  • hsetnx不存在赋值,存在了无效

五、集合

单值多value,并且无重复

  • sadd/srem key member添加/删除元素
  • smembers遍历集合中的所有元素
  • sismember key member判断元素是否在集合中
  • sdiff/sunion/sinter集合运算 减/并/交

六、有序集合

有序集合是在集合的基础上,每个val值前面加上了score分数
set ---> k1 v1 v2 v3
zset---> k1 score1 v1 score2 v2

  • zadd key score member 添加元素
  • zrange key start stop从start位置到stop位置遍历元素。
  • zrangebyscore key min max获取指定分数范围的元素
  • zscore key member获取元素的分数
  • zrem key value删除对应value值的score

七、位图

  • setbit key offset value设置key对应value的第offset位为valueoffset从0开始算,value是1或者0
  • gitbit key offset获取key对应valueoffset位的值
  • strlen统计字节数占多少
  • bitcount全部键里面含有1的个数

八、基数统计

HyperLogLog是用来做基数统计的算法。其优点是,在输入元素数量或者体积非常大时,计算基数所需的空间总量是固定且非常小的。基础用法主要是去重

  • pfadd key value添加指定元素到HyperLogLog中
  • pfcount key返回HyperLogLog的估算值
  • pfmerge destkey sourcekey将多个HyperLogLog合并为一个HyperLogLog

九、地理空间

  • GEOADD key longitude latitude member添加经纬度坐标
  • GEOHASH key member使用geohash保存返回坐标
  • GEODIST key member1 member2计算两个点的距离
  • GEORADIUS以给定的经纬度为中心,求半径范围内的元素
  • GEORADIUSMEMBER找出位于指定范围内的元素,中心点由给定的位置元素决定

十、流

Reids消息队列的实现方式有:

  • List实现消息队列,支持了一对一的消息传输,但是一对多的消息传输却力不从心。
  • Redis发布订阅(pub/sub)缺点在于消息无法持久化,如果没有消费者,消息就会直接被丢弃。

所以,在Redis5.0出现了Stream用来支持消息队列。Stream实现了消息队列,支持消息的持久化、支持自动生成全局唯一ID、支持ack确认消息的模式、支持消费组模式等,让消息队列更加稳定可靠。

10.1消息队列的结构

在这里插入图片描述

名词解释
Message Content消息内容
Consumer group消费组,一个消费组有多个消费者
Last_delivered_id游标,消费组中的消费者读取消息后会使游标前移
Consumer消费者
pending_ids记录被当前消费组已读但未ack的消息Id,用来确保客户端至少消费了消息一次,但不会在网络传输的中途丢失了。

10.2 队列相关命令

  • XADD添加消息到队列末尾,*表示自动生成id
  • XRANGE start end count获取消息队列,start表示开始(-表示最小值),end表示结束(+表示最大值),count表示最多获得多少个值。
  • XREVRANGE end start count反向获取消息队列
  • XDEL删除消息
  • XLEN获取消息队列的消息长度
  • XTRIM对stream长度进行截取
  • XREAD用于获取消息,返回大于指定ID的消息,可以设置是否以阻塞的方式读取

10.3 消费组相关命令

  • XGROUP CREATE用于创建消费者组,命令末尾带$表示从尾部开始消费,命令末尾带0表示从头部开始消费。
  • XREADGROUP GROUP groupA consumer1 STREAMS mystream >用于让消费者读取消息,消费组groupA内的消费者consumer1从mystream消息队列中读取所有信息。并且,同一消费组里的消费者不能读取同一条消息。
  • XPENGDING查询每个消费组内所有消费者已读取但未确认的消息,并且能查看某个消费者具体读了哪些数据
  • XACK向消息队列确认消息处理已经完成

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

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

相关文章

CA根证书——https安全保障的基石

HTTPS通信中,服务器端使用数字证书来证明自己的身份。客户端需要验证服务器发送的证书的真实性。这就需要一个可信的第三方机构,即CA,来颁发和管理证书。CA根证书是证书颁发机构层次结构的顶级证书,客户端信任的所有证书都可以追溯…

并发编程之线程池的详细解析

线程池 线程池的优势: 线程池做的工作只要是控制运行的线程数量,处理过程中将任务放入队列,然后线程创建石后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其他线程执行完毕&#xf…

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

目录 前言 Tessy 如何进行打桩操作 普通桩 高级桩 手写桩 Tessy单元测试之指针相关测试注意事项 有类型的指针(非函数指针): 有类型的函数指针: void 类型的指针: 结语 前言 进行单元测试之后,但凡…

css-盒子阴影

1.box-shadow: 10px 20px 10px 10px blue; 参数对应顺序:上下,左右 ,模糊程度,颜色 ,阴影大小 2.box-shadow: 10px 20px 10px 20px blue,-10px -20px 10px 50px red; 负号就是相反方向 支持多个阴影 在后面加逗号 3…

dockerfile制作-pytoch+深度学习环境版

你好你好! 以下内容仅为当前认识,可能有不足之处,欢迎讨论! 文章目录 文档内容docker相关术语docker常用命令容器常用命令根据dockerfile创建容器dokerfile文件内容 docker问题:可能的原因和解决方法示例修改修改后的D…

谷粒商城——通过接口幂等性防止重复提交订单

如果用户向后端服务提交多次相同订单的提交服务,那么后端应该只生成一条订单记录。 有一些操作天然是幂等的,如查询操作和删除操作等。 幂等性实现 1.token机制(仅这个方法适用于订单的重复提交) 后端先生成1个令牌将其记录在R…

MATLAB绘制堆叠填充图--巧用句柄

MATLAB绘制堆叠填充图–巧用句柄 目录 MATLAB绘制堆叠填充图--巧用句柄1. 主要原理讲解1.1 主要函数1.2 句柄原理 2. 绘图示例2.1 准备数据2.2 绘制堆叠填充图-使用句柄控制图形属性2.3 设置填充颜色和样式2.4 添加标题和标签2.5 绘图效果 3. 结语 堆叠填充图是一种常见的数据可…

【2024年5月备考新增】《2024高项论文精华版(3)考试技巧》

3 考试技巧 3.1 考试难度 考试难度上,越是常见的题目、越是被大家预测的题目,阅卷就会更严格。 越是大家猜测不到的,越是小众的题目,阅卷严格程度就会低。 3.2 技巧 1、记住软考论文的目的,不是为了证明你的格式严谨…

中科驭数超低时延网络解决方案入选2023年度金融信创优秀解决方案

近日,由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布「2023年度第三期金融信创优秀解决方案」,中科驭数超低时延网络解决方案从众多方案中脱颖而出,成功入选,代表了该方案的技术创新和金融实践…

使用plasmo开发浏览器插件在网页指定位置添加自定义UI

使用plasmo开发浏览器插件的时候,有时候需要在指定网站的指定页面添加自定义的UI内容,如果通过content.js内容脚本去通过js创建的话,可就太麻烦了,要写不少的js代码。不过plasmo已经帮我们实现了这个功能,就是Content …

安全防御产品—锐安盾重磅上线,助力更安全、更流畅的业务体验

在互联网时代,互联网技术蓬勃发展,然而,随之而来的网络安全问题也备受关注。诸如DDoS攻击、CC攻击、常见Web攻击等攻击手段突如其来,导致企业业务中断,严重影响企业业务正常运行。对此,锐成云重磅推出安全防…

分布式全闪占比剧增 152%,2023 年企业存储市场报告发布

近日,IDC 发布了 2023 年度的中国存储市场报告。根据该报告,在 2023 年软件定义存储的市场占比进一步扩大,分布式全闪的增长尤其亮眼,其市场份额从 2022 年的 7% 剧增到 2023 年的 17.7%,增长了 152%。 01 中国企业存…

提升LLM效果的几种简单方法

其实这个文章想写很久了,最近一直在做大模型相关的产品,经过和团队成员一段时间的摸索,对大模型知识库做一下相关的认知和总结。希望最终形成一个系列。 对于知识库问答,现在有两种方案,一种基于llamaindex&#xff0…

绝地求生:[更新周报] 4/3 不停机更新:无上新、众多物品和活动即将下架!

大家好,我闲游盒;本周三4月3号,绝地求生不会有停机时间,大家可以随便玩~ ▲本周可选地图池 亚服/东南亚服:艾伦格、荣都、萨诺、米拉玛、帕拉莫; 日服/韩服KAKAO服:艾伦格、泰戈、萨诺、荣都、…

​港中文提出CLongEval中文基准测试集,准确评估大模型长上下文能力

论文题目: ClongEval: A Chinese Benchmark for Evaluating Long-Context Large Language Models 论文地址: https://arxiv.org/abs/2403.03514 代码地址: https://github.com/zexuanqiu/CLongEval 研究背景和贡献 为了使 LLM 能够支持更复杂…

STM32学习笔记(9_2)- USART串口外设

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 在STM3…

ES-7.12-官网阅读-ILM-自定义内置ILM策略

官网地址:Tutorial: Customize built-in ILM policies | Elasticsearch Guide [7.12] | Elastic 教程:自定义内置ILM策略(Customize built-in ILM policies) Elasticsearch包含如下内建ILM 策略: logs(日…

【项目技术介绍篇】若依项目代码文件结构介绍

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

数据可视化高级技术(Echarts)

目录 (一)数据可视化概念及Echarts基础知识 数据可视化的好处: 数据可视化的目标 数据可视化的基本流程 (二)数据图表 类别比较图表: 数据关系图表: 数据分布图表: 时间序列…

增加网站搜索引擎排名的6个准则

怎样提高网站排名首页 在竞争激烈的网络世界中,网站的排名对于吸引流量和提升曝光至关重要。登上搜索引擎结果页面的首页,意味着更多的曝光和点击率。以下是一些方法,可以帮助您提高网站在搜索引擎中的排名,让其跻身首页&#xf…