Redis:十大数据类型

news2024/9/20 12:37:04

键(key)

常用命令

1. 字符串(String)

1.1 基本命令

  • set key value

 如下:设置kv键值对,存货时长为30秒

  • get key 
  •  mset key value [key value ...]
  • mget key [key ...]

同时设置或者获取多个键值对

  •  getrange

获取指定区间范围内的值,类似between......and的关系

从零到负一表示全部

  • setrange

设置指定区间范围内的值,格式是setrange key值 具体值 

  • setnx key value
  • setex 设置带过期时间的键
  • setex 键 秒 值

1.3 应用场景

  • 视频点赞
  • 是否喜欢文章 

2. 列表(List) 

2.1 简介 

 单key多value

2.2 常用命令

2.3 应用场景

  • 微信公众号消息订阅 

 3. 哈希(Hash)

3.1 简介

kv模式不变,但是v是一个键值对

3.2 常用命令

4. 集合(Set)

4.1 简介 

 单键多value且value无重复

4.2 常用命令

4.3 应用场景

  •  微信小程序抽奖
  •  微信朋友圈点赞查看同赞好友
  •  QQ推可能认识的朋友

5. 有序集合(Zset) 

5.1 简介

在set基础上添加一个score分数

之前是set k1 v1 v2 ...

现在是Zset k1 score1 v1 score2 v2 ...

5.2 常用命令

5.3 应用场景

  • 排行榜展示 

6. 位图(bitmap)

6.1 简介

说明:用String类型作为底层数据结构实现的一种统计二值状态的数据类型

位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)。

Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)

概括 

位图就是由0和1状态表现的二进制位bit数组

 6.2 需求场景

  • 用户每日登录
  • 用户每日是否点击广告
  • 钉钉签到,上班打卡

6.3 基本命令

  • setbit

setbit key offset value  

含义:将key位图偏移量为offset的数据设为value

key:要操作的位图键名

offset:操作该位图哪一位的数据(数据偏移量)

value:只能是0或者1

  • getbit

getbit key offset

含义:获取key位图偏移量为offset上的value值

key:要操作的位图键名

offset:偏移量

  • strlen

strlen key

含义:获取key位图所占用的字节大小

返回8的整数位,因为8bit等于1字节,位图按照字节进行扩容

如:此时该位图开辟到第九个bit位空间时,将返回2字节即该位图空间占用为2字节

  •  bitcount

bitcount key

含义:统计key位图上所有bit位值为1的总和进行返回

  • bitop

bitop and key key1 [key2 ...]

含义:将key1、key2等等key中内容一样的值统计到key中,后通过bitcount可查到内容一样的值有多少

如下:将用户2001和2002中同一个bit位中值一样的数据统计到k2中,后通过bitcount命令返回k2存的值 

127.0.0.1:6379> setbit 2001 0 1
(integer) 0
127.0.0.1:6379> setbit 2001 1 1
(integer) 0
127.0.0.1:6379> setbit 2001 2 1
(integer) 0
127.0.0.1:6379> setbit 2001 3 1
(integer) 0
127.0.0.1:6379> setbit 2002 2 1
(integer) 0
127.0.0.1:6379> setbit 2002 3 1
(integer) 0
127.0.0.1:6379> setbit 2002 4 1
(integer) 0
127.0.0.1:6379> bitop and k2 2001 2002
(integer) 1
127.0.0.1:6379> bitcount k2
(integer) 2

 7. 基数统计(HyperLogLog)

7.1 简介

 基数统计:用于统计数据集中去重后剩余的元素个数

7.2 需求场景

  •  统计某个网站的uv,某个文章的uv

uv:unique visitor独立访客,可理解为用户IP

为防止某些用户进行刷单或者刷访问量即可用到基数统计,将所有uv相同的去重后统计进行统计

7.3 基本命令

127.0.0.1:6379> pfadd p1 1 1 1 2 3 4  #将数据添加到类型为HyperLogLog的p1中
(integer) 1                           #返回1为true
127.0.0.1:6379> pfadd p2 2 2 2 2 3
(integer) 1
127.0.0.1:6379> pfcount p1            #去重
(integer) 4                           #去重后的实际个数
127.0.0.1:6379> pfcount p2
(integer) 2                          
127.0.0.1:6379> pfmerge destkey p1 p2 #将p1和p2结果集合并到名为destkey的结果集中
OK
127.0.0.1:6379> pfcount destkey
(integer) 4

8. 地理空间(GEO)

8.1 简介

移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、高德地图附近的核酸检查点等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的?

 

地球上的地理位置是使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],只要我们确定一个点的经纬度就可以名取得他在地球的位置。

例如滴滴打车,最直观的操作就是实时记录更新各个车的位置,

然后当我们要找车时,在数据库中查找距离我们(坐标x0,y0)附近r公里范围内部的车辆

 

使用如下SQL即可:

select taxi from position where x0-r < x < x0 + r and y0-r < y < y0+r

但是这样会有什么问题呢?

1.查询性能问题,如果并发高,数据量大这种查询是要搞垮数据库的

2.这个查询的是一个矩形访问,而不是以我为中心r公里为半径的圆形访问。

3.精准度的问题,我们知道地球不是平面坐标系,而是一个圆球,这种矩形计算在长距离计算时会有很大误差

8.2 基本命令

  • GEOADD

多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定key中

  •  GEOPOS

从键里面返回所有给定位置元素的位置(经度和纬度)

  • GEODIST

返回两个给定位置之间的距离 

  • GEORADIUS

 以给定经纬度为中心,返回与中心距离不超过最大指定距离的所有元素

  • GEOHASH 

weixinwei'xin

 9. 流(Stream)

9.1 简介

Redis版的MQ消息中间件+阻塞队列

实现消息队列,支持消息队列持久化、支持自动生成全局唯一id、支持ack消息确认模式、支持消费组模式,让消息队列更加安全可靠

一个消息链表,将所有加入的消息都串起来,每个消息都有一个唯一的 ID 和对应的内容

1
Message Content
消息内容
2
Consumer group
消费组,通过XGROUP CREATE 命令创建,同一个消费组可以有多个消费者
3
Last_delivered_id
游标,每个消费组会有个游标 last_delivered_id,任意一个消费者读取了消息都会使游标 last_delivered_id 往前移动。
4
Consumer
消费者,消费组中的消费者
5
Pending_ids
消费者会有一个状态变量,用于记录被当前消费已读取但未ack的消息Id,如果客户端没有ack,这个变量里面的消息ID会越来越多,一旦某个消息被ack它就开始减少。这个pending_ids变量在Redis官方被称之为 PEL(Pending Entries List),记录了当前已经被客户端读取的消息,但是还没有 ack (Acknowledge character:确认字符),它用来确保客户端至少消费了消息一次,而不会在网络传输的中途丢失了没处理

 9.2 基本命令

  • 队列相关指令

  • 消费组相关指令

四个特殊符号

  •  - + 表示最小和最大出现的id
  • $ 表示只消费新的消息,当前流中最大id,可用于将要到来的消息
  • > 表示从第一条尚未被消费的消息进行读取
  • * 用于XADD命令中,自动生成id,类似于MySQL中的自增id 

10. 位域(bitfield)

了解即可

常用命令

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

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

相关文章

万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”

在金秋送爽的11月&#xff0c;南京这座历史悠久而又充满活力的城市&#xff0c;即将迎来一场科技盛宴——2024南京智慧城市、物联网、大数据展会。这不仅是一场技术的集会&#xff0c;更是未来生活蓝图的预览&#xff0c;它汇聚了全球顶尖的科技企业、创新者及行业精英&#xf…

制作PE启动U盘 预防电脑无法正常开机进入系统

PE 是一种简化版的便携式操作系统&#xff0c;它可以直接装载在 U 盘里运行。通过它我们能做非常多的应急操作&#xff0c;比如删除文件、卸载软件、拷贝数据、格式化硬盘、重装系统等。 在电脑无法正常开机进入系统&#xff0c;身边又没有其他电脑时&#xff0c;手头有个 PE …

Corsearch 用 ClickHouse 替换 MySQL 进行内容和品牌保护

本文字数&#xff1a;3357&#xff1b;估计阅读时间&#xff1a;9 分钟 作者&#xff1a;ClickHouse Team 本文在公众号【ClickHouseInc】首发 Chase Richards 自 2011 年在初创公司 Marketly 担任工程负责人&#xff0c;直到 2020 年公司被收购。他现在是品牌保护公司 Corsear…

【Linux】-----工具篇(编译器gcc/g++,调试器gdb)

目录 一、gcc/g 简单认识 程序的翻译过程认识gcc 预处理(宏替换) 编译 汇编 链接 宏观认识 如何理解&#xff08;核心&#xff09; 什么是链接&#xff1f; 链接的分类 二、gdb 基本的认识 基本操作及指令 安装gdb 启动gdb ​编辑 显示源代码(list) 运行程序…

网友提问:桌面与web开发哪个难度更大?

关于桌面应用开发与Web开发哪个难度更大的问题&#xff0c;实际上并没有绝对的答案&#xff0c;因为这取决于具体的开发任务、所使用的工具和技术栈等因素。不过&#xff0c;我们可以从几个方面来进行比较&#xff1a; 技术栈 Web开发&#xff1a; 前端通常涉及到HTML、CSS、J…

Ansible之playbook剧本编写(二)

tags 模块 可以在一个playbook中为某个或某些任务定义“标签”&#xff0c;在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。 playbook还提供了一个特殊的tags为always。作用就是当使用always作为tags的task时&#xff0c;无论执行哪一个t…

全球奈拉滨市场规模预测:未来六年年复合增长率CAGR为1.1%

据恒州诚思研究&#xff0c;2023年全球奈拉滨市场规模大约为3.8亿元&#xff0c;预计未来六年年复合增长率CAGR为1.1%&#xff0c;到2030年市场规模将接近4.2亿元。这一增长反映了奈拉滨在全球医药行业中的重要性及其在未来发展中的潜在机会。随着科学的进一步发展和市场的扩展…

中小学汉字听写大赛方案及执行流程

一、活动背景 汉字作为中国最宝贵的文化遗产&#xff0c;在五千年的历史长河里&#xff0c;汉字以其浩瀚广博抒写着华夏历史&#xff0c;以其灵秀展示着炎黄之精神。传承汉字文明是我们的使命和主责任。为提高我校七年级学生听写汉字的能力&#xff0c;规范汉字书写的能力&…

ESD防护之电容妙用

谈到ESD防护&#xff0c;应用最广泛的是ESD/TVS管&#xff0c;对于正负4KV的pin脚不上电ESD测试&#xff0c;也可以仅仅依靠nf级电容完成ESD防护。下面以一篇实际案例进行说明。 实验要求&#xff1a;正负4KV对产品connector的Pin脚进行ESD测试&#xff0c;connector中的地脚接…

idea启动项目报:the command line via JAR manifest or via a classpath file and rerun.

解决方案 1.打开Edit Configurations&#xff0c;进去编辑&#xff0c;如下&#xff1a; 笔记配置 2.选择Modfiy options,点击Shorten command line 3.在新增的Shorten command line选项中选择JAR manifest或classpath file 4.点击保存后即可

企业如何通过红酒传达品牌理念?

在繁忙的商业世界中&#xff0c;品牌理念的传达往往是企业成功的关键。而红酒&#xff0c;这一优雅的饮品&#xff0c;不仅具有深厚的文化底蕴&#xff0c;更是品牌理念传递的很好载体。今天&#xff0c;我们就来探讨一下企业如何通过定制红酒——特别是洒派红酒&#xff08;Bo…

Java漏洞复现(ctfshow279-297)strust 漏洞复现及原理解释

Java漏洞复现 Strust原理 JavaEE--------Struts2框架-CSDN博客 Web279 struts2漏洞 S2-001是当用户提交表单数据且验证失败时&#xff0c;服务器使用OGNL表达式解析用户先前提交的参数值&#xff0c;%{value}并重新填充相应的表单数据。 这里的%{value}简单理解就是和flask的…

【计算机网络】IP分片实验

一&#xff1a;实验目的 1&#xff1a;理解IP数据报分片的工作原理。 2&#xff1a;理解IP协议报文类型和格式。 二&#xff1a;实验仪器设备及软件 硬件&#xff1a;RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。 软件&#xff1a;记事本、WireShark、Chrom…

昇思25天学习打卡营第22天|CycleGAN图像风格迁移互换

相关知识 CycleGAN 循环生成网络&#xff0c;实现了在没有配对示例的情况下将图像从源域X转换到目标域Y的方法&#xff0c;应用于域迁移&#xff0c;也就是图像风格迁移。上章介绍了可以完成图像翻译任务的Pix2Pix&#xff0c;但是Pix2Pix的数据必须是成对的。CycleGAN中只需…

DosSnake-入土为安第八天

记录一下不能F5反编译 加密方式 密文 异或操作函数 xor_string_with_key&#xff1a; 接受两个字符串作为输入&#xff1a;待处理的 text 和 key。对每个字符进行异或操作。使用 ord(char) 获取字符的 ASCII 值&#xff0c;ord(key[i % key_length]) 是 key 中对应位置的字符的…

3D Web轻量化引擎HOOPS Communicator针对复杂大模型Web端可视化的解决方案

随着工程设计、制造和建筑领域中三维模型的日益复杂化&#xff0c;如何在Web端高效处理和展示这些大规模数据成为一大挑战。HOOPS Communicator作为一款强大的3D可视化工具&#xff0c;提供了一套针对复杂大模型的轻量化解决方案&#xff0c;涵盖了模型轻量化及格式转换、超大模…

【基础算法总结】队列 + 宽搜(BFS)

队列 宽搜BFS 1.N 叉树的层序遍历2.二叉树的锯齿形层序遍历3.二叉树最大宽度4.在每个树行中找最大值 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#…

活动报名小程序

#活动报名工具# # 活动报名小程序 ## 项目简介 一款通用的活动报名工具&#xff0c;包含活动展示&#xff0c;微信支付&#xff0c;订单管理&#xff0c;分享评价等功能。 品客聚精彩&#xff0c;有你才精彩&#xff01;不只有线下活动还可以进行线上裂变活动。 …

SpringBoot知识笔记

一、基本概念 1.1 特性 起步依赖 自动配置 其它特性:内嵌的Tomcat、Jetty(无需部署WAR文件),外部配置,不需要XML配置(properties/yml)。 1.2 配置文件 SpringBoot提供了多种属性配置方式 //application.properties server.port=9090 server.servlet.context-path…

自从与泰勒斯威夫特约会以来,特拉维斯凯尔西表现得像布拉德皮特一样挥霍打扮

今年对于泰勒斯威夫特和特拉维斯凯尔西来说可谓是风云变幻的一年&#xff0c;他们秘密开始约会&#xff0c;然后有了今年最引人瞩目的恋情。对于这位 NFL 运动员来说&#xff0c;这是一个巨大的变化&#xff0c;因为随着斯威夫特的粉丝们了解了凯尔西家族的一切&#xff0c;他的…