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

一、常用的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向消息队列确认消息处理已经完成

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微服务(基础篇-007-RabbitMQ部署指南)

目录 05-RabbitMQ快速入门--介绍和安装_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p65&vd_source60a35a11f813c6dff0b76089e5e138cc 1.单机部署 1.1.下载镜像 1.2.安装MQ 2.集群部署 2.1.集群分类 2.2.设置网络 视频地址: 05-Rab…

《养育男孩》:培养未来男子汉,养育男孩的全方位指南

粉丝福利:公众号内回复4可免费获取本期《养育男孩》的读书音频哦。 作为一名家长,我们深知在孩子成长过程中,尤其是男孩的成长过程中,父母的角色和责任有多么重大。最近阅读了心理学家史蒂夫比达尔夫所著的《养育男孩》一书&…

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

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

「51媒体网」媒体邀约现场采访的优势有哪些?

传媒如春雨,润物细无声的,大家好,我是51媒体网胡老师。 媒体邀约现场采访的优势主要表现在以下几个方面: 实时报道与传播:现场采访能够让媒体了解活动的真实性,此外,到场报道媒体可以实时迅速将…

谷粒商城实战(009 缓存-分布式锁)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强 总时长 104:45:00 共408P 此文章包含第158p-第p165的内容 分布式锁 原理和使用 使用下shell对产生的命令进行发送 查看 -> 撰写 -> 撰写栏 idea 选中的代码提取成方法 加锁…

go优雅读取zip压缩包-进阶2

【前言】 看到这里就晓得了,之前那一一篇文章go优雅读取zip压缩包,依旧还是有些问题,接下来,我就开始描述下本文章讲述的内容: 面对需要多次读取多个zip压缩包里的指定文件内容,如何提升读取的速度&#x…

smart link实验配置

相关知识点:stp生成树协议,收敛时间慢会导致丢帧,所以利用samrt link配置 1.分主从端口,正常情况下主端口工作,从端口阻塞,防止回路,主端口出问题,切换从端口,并通过flu…

寒冬已逝,“量子春天”正来

最近,全球对量子技术领域的私人投资有所下降,引发了一些观点认为这个领域可能正逐渐衰退。 政治家、资助者和投资者并不总是以科学为关注焦点。然而,某些科技领域偶尔会成为热点,正如20世纪50年代核能技术的兴起,那时人…

分月饼 java题解

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in); int m sc.nextInt(); // 读取员工数量mint n sc.nextInt(); // 读取月饼数量n// 调用distribute方法并打印返回的分配方法总数//先默认每人分一个…

​慧天[HTWATER]可以与与SWMM模型之间实现转换吗?

​慧天[HTWATER]软件简介 针对城市排水系统基础设施数据管理的需求,以及水文、水力及水质模拟对数据的需求,实现了以数据库方式对相应数据的存储。可以对分流制排水系统及合流制排水系统进行地表水文、管网水力、水质过程的模拟计算。可以对城市低影响开…

echarts仪表盘特殊样式

const drawChartOption function (value, max) {const colorConfig {name: 测试,colorList: {text: #fff,line2: {type: linear,x: 0, // 右y: 0, // 下x2: 1, // 左y2: 0, // 上colorStops: [// {// offset: 0,// color: transparent// },{offset: 0.1,color: #031e…

TikTok防关联引流系统:全球多账号运营的终极解决方案

tiktok防关联引流系统介绍,tiktok防关联系统是基于tiktok生态研发的效率工具,帮你快速实现tiktok全球多账号运营,系统配备了性能强劲的安卓,防关联智能终端,可一建创建全球多国手机环境,完美满足各类app软件…

CX3324A是德科技CX3324A器件电流波形分析仪

181/2461/8938产品概述: 器件电流波形分析仪,1 GSa/s,14/16 位,4 通道 主机功能特性 为电流和差分传感器以及无源探头接口适配器提供 4 个模拟通道带宽选件:50 MHz、100 MHz、200 MHz存储器深度选件:4 M…

eclipse操作

1. 屏蔽不用的代码或文件夹 右键需要屏蔽的文件夹或文件,选择properties,选择c/c build ,在Exclude resource from build 前面勾选,然后点击apply应用,就屏蔽了这个文件夹或者文件了,编译时就会忽略。 设置…

浅聊什么是Redis?

需求:MySQL面临大量的查询,即读写操作,因此类比CPU,给数据加缓存,Redis诞生。应用程序从MySQL查询的数据,在Redis设置缓存(记录在内存中,无需IO操作),后再需要…

Linux(CentOS)安装Redis教程_简单快捷

一、安装依赖 因为redis是用C语言开发的,所以在安装之前需要确定是否安装gcc环境(gcc -v),如果没有安转可以执行一下命令进行安装 [rootlocalhost ~]# yum install -y gcc 二、下载安装包 1.在官网先进行下载 官网地址&#x…

Node.js-------初识Node.js与内置模块

能够知道什么是 Node.js能够知道 Node.js 可以做什么能够说出 Node.js 中的 JavaScript 的组成部分能够使用 fs 模块读写操作文件能够使用 path 模块处理路径能够使用 http 模块写一个基本的 web 服务器 一.初识Node.js 1.浏览器中的 JavaScript 的组成部分 2.Node.js 简介 …

从“量子”到分子:探索计算的无限可能 | 综述荐读

在2023年年末,两篇划时代的研究报告在《科学》(Science)杂志上引发了广泛关注。这两篇论文分别来自两个研究小组,它们共同揭示了单氟化钙分子间相互作用的研究成果,成功地在这些分子间创造出了分子量子比特。这一成就不…

理解二分类场景评估中的Recall和Precision

场景解释: 二分类场景会有两种输出。我的样本里有猫的图片和其他的图片。我的输出值是“是猫”和“非猫”。这个场景下,“是猫”是我的正样本(Postive)。“非猫”是我的负样本(Negative)。 Confusion matrix: 横向表示预测的结果。纵向表示真实的结果。…

生命之重-ICU门口的守望人

有人说如果没有经历过在ICU门口守候的人,就无法真正懂得珍惜生命。但实际情况也未必尽然,不过这种经历确实可以教会你懂得珍惜,当然希望大家都不要亲身经历。我希望能够通过讲述一个真实的故事来呈现这一观点,而不是令人难以接受的…