当前位置: 首页 > news >正文

Redis:十大数据类型

键(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)

了解即可

常用命令

相关文章:

Redis:十大数据类型

键&#xff08;key&#xff09; 常用命令 1. 字符串&#xff08;String&#xff09; 1.1 基本命令 set key value 如下&#xff1a;设置kv键值对&#xff0c;存货时长为30秒 get key mset key value [key value ...]mget key [key ...] 同时设置或者获取多个键值对 getrange…...

bugku-web-source

kali中先用dirsearch工具扫描后台目录&#xff0c;然后用wget -r url/.git命令递归下载后&#xff0c;进入txt文件使用git reflog命令然后只用git show查看作者提交flag日志&#xff0c;用git show 一个一个去尝试&#xff0c;很多假的flag git reflog 是一个 Git 命令&#x…...

一键生成视频并批量上传视频抖音、bilibili、腾讯(已打包)

GenerateAndAutoupload Github地址&#xff1a;https://github.com/cmdch2017/GenerateAndAutoupload 如何下载&#xff08;找到最新的release&#xff09; https://github.com/cmdch2017/GenerateAndAutoupload/releases/download/v1.0.1/v1.0.1.zip 启动必知道 conf.py …...

Python WSGI服务器库之gunicorn使用详解

概要 在部署 Python Web 应用程序时,选择合适的 WSGI 服务器是关键的一步。Gunicorn(Green Unicorn)是一个高性能、易于使用的 Python WSGI HTTP 服务器,适用于各种应用部署场景。Gunicorn 设计简洁,支持多种工作模式,能够有效地管理和处理大量并发请求。本文将详细介绍…...

Java编程达人:每日一练,提升自我

目录 题目1.以下哪个单词不是 Java 的关键字&#xff1f;2.boolean 类型的默认值为&#xff1f;3.以下代码输出正确的是&#xff1f;4.以下代码&#xff0c;输出结果为&#xff1a;5.以下代码输出结果为&#xff1a;6.以下代码输出结果为&#xff1f;7.float 变量的默认值为&am…...

(35)远程识别(又称无人机识别)(二)

文章目录 前言 4 ArduRemoteID 5 终端用户数据的设置和使用 6 测试 7 为OEMs添加远程ID到ArduPilot系统的视频教程 前言 在一些国家&#xff0c;远程 ID 正在成为一项法律要求。以下是与 ArduPilot 兼容的设备列表。这里(here)有一个关于远程 ID 的很好解释和常见问题列表…...

提供三方API接口、调用第三方接口API接口、模拟API接口(一)通过signature签名验证,避免参数恶意修改

为什么要设计安全的api接口 运行在外网服务器的接口暴露在整个互联网中&#xff0c;可能会受到各种攻击&#xff0c;例如恶意爬取服务器数据、恶意篡改请求数据等&#xff0c;因此需要一个机制去保证api接口是相对安全的。 本项目api接口安全设计 本项目api接口的安全性主要…...

CDO学习

1.备份instie.mdb文件 2....

奥运会Ⅱ---谁会先抢走你的工作?

Devin AI 与 Microsoft AutoDev&#xff0c;谁会先抢走你的工作&#xff1f; 软件开发领域正处于一场革命的风口浪尖。Devin AI和Microsoft AutoDev 的出现&#xff0c;是人工智能编码领域的两项突破性进步&#xff0c;有望重塑软件构建方式。但是&#xff0c;在如此截然不同的…...

用Python打造精彩动画与视频,4.3 创建动态文本和字幕

第四章&#xff1a;深入MoviePy 4.3 创建动态文本和字幕 在视频编辑中&#xff0c;动态文本和字幕是传达信息、增强观众体验的重要元素。MoviePy 提供了丰富的工具来添加和自定义文本和字幕&#xff0c;包括字体、颜色、动画效果等。本节将介绍如何在视频中添加动态文本和字幕…...

spring boot + vue3 接入钉钉实现扫码登录

1&#xff1a;准备工作 1.1&#xff1a;进入钉钉开放平台创建开发者应用。应用创建和类型介绍&#xff0c;参考下方。 应用类型介绍 - 钉钉开放平台 (dingtalk.com) 应用能力介绍 - 钉钉开放平台 (dingtalk.com) 扫码登录第三方网站 - 钉钉开放平台 (dingtalk.com) 1.2&…...

二叉树构建(从3种遍历中构建)python刷题记录

R3-树与二叉树篇. 目录 从前序与中序遍历序列构造二叉树 算法思路&#xff1a; 灵神套路 从中序与后序遍历序列构造二叉树 算法思路&#xff1a; 灵神套路 从前序和后序遍历序列构造二叉树 算法思路&#xff1a; 灵神套路 从前序与中序遍历序列构造二叉树 算法…...

计算机网络中协议与报文的关系

协议和报文在网络通信中扮演着不同的角色&#xff0c;但它们是紧密相关的。 协议是计算机网络中实现通信的“约定”&#xff0c;它规定了计算机之间如何进行通信&#xff0c;包括数据传输的格式、步骤和规则。协议确保了不同厂商的设备、不同的CPU和操作系统之间的计算机能够相…...

机器学习 第8章-集成学习

机器学习 第8章-集成学习 8.1 个体与集成 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务&#xff0c;有时也被称为多分类器系统(multi-classifersystem)、基于委员会的学习(committee-based learning)等。 图8.1显示出集成学习的一般结构:先产生一组“…...

Docker 安装 GitLab教程

本章教程,主要介绍如何在Docker 中安装GitLab。 GitLab 是一个开源的 DevOps 平台,提供了一整套工具,用于软件开发生命周期的各个阶段,从代码管理到 CI/CD(持续集成和持续交付/部署),再到监控和安全分析。 一、拉取镜像 docker pull gitlab/gitlab-ce:latest二、创建 G…...

如何在生产环境中千万表添加索引并保证数据一致性

技术分享文档&#xff1a;如何在生产环境中千万表添加索引并保证数据一致性 目录 引言添加索引的挑战解决方案概述详细步骤 4.1 创建新表并添加索引 4.2 批量导入数据 4.3 处理增量数据 4.4 表名切换确保数据一致性 5.1 暂停写操作 5.2 记录增量数据 5.3 应用增量数据设置回滚…...

Uni-APP页面跳转问题(十六)

【背景】最近在做公司一个PAD端,谁被点检功能,主要时为了移动端点检设备和打印标签,需求比较简单就是扫描设备二维码,问题在于扫描后要能够重复进行多设备的扫描;早期开发的设备点检能够满足需求但是当连续扫描五六十个设备后,APP卡死,必须重启才能使用。 界面原图: 输…...

Java新特性(二) Stream与Optional详解

Java8新特性&#xff08;二&#xff09; Stream与Optional详解 一. Stream流 1. Stream概述 1.1 基本概念 Stream&#xff08;java.util.stream&#xff09; 是Java 8中新增的一种抽象流式接口&#xff0c;主要用于配合Lambda表达式提高批量数据的计算和处理效率。Stream不是…...

springboot系列教程(三十一):springboot整合Nacos组件,环境搭建和入门案例详解

一、Nacos基础简介 1、概念简介 Nacos 是构建以“服务”为中心的现代应用架构&#xff0c;如微服务范式、云原生范式等服务基础设施。聚焦于发现、配置和管理微服务。Nacos提供一组简单易用的特性集&#xff0c;帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管…...

Traefik系列

一、入门Traefik系列——基础简介 官方文档 https://doc.traefik.io/traefik/[1] 简介 Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Re…...

【力扣】3128. 直角三角形 JAVA

一、题目描述 给你一个二维 boolean 矩阵 grid 。 请你返回使用 grid 中的 3 个元素可以构建的 直角三角形 数目&#xff0c;且满足 3 个元素值 都 为 1 。 注意&#xff1a; 如果 grid 中 3 个元素满足&#xff1a;一个元素与另一个元素在 同一行&#xff0c;同时与第三个元素…...

如何全面提升企业安全意识

引言 在当今数字化和信息化的时代&#xff0c;网络安全已成为企业运营不可忽视的核心问题。员工的安全意识直接关系到企业的数据安全和整体网络防护能力。即使企业采用了先进的安全技术&#xff0c;如果员工缺乏足够的安全意识&#xff0c;仍然容易成为攻击者的突破口。本文将…...

全球支持与无界服务:跨越地域的数据采集与分析

在当今企业运营中&#xff0c;IT 监控系统的全球支持和无界服务变得至关重要。随着企业业务的全球化扩展&#xff0c;传统的监控工具往往因地域限制而无法满足全球统一监控的需求。观测云通过其全球部署的数据采集点和多语言支持&#xff0c;确保了无论数据产生于何处&#xff…...

Java面试八股之简述spring boot的目录结构

简述spring boot的目录结构 Spring Boot 项目遵循标准的 Maven 或 Gradle 项目布局&#xff0c;并且有一些约定的目录用于组织不同的项目组件。下面是一个典型的 Spring Boot 项目目录结构&#xff1a; src/main/java&#xff1a;包含所有的 Java 源代码&#xff0c;通常按包组…...

python == 与 is区别

刷到一个面试题 python中 与 is 的区别 根据以往的经验&#xff0c;这个问题应该考察的是运算符根据地址 还是值进行比较的 s1 [a] s2 [a] s3 s1 print(s1 s2) # True 值相等 print(s1 s3) # True 值相等 print(s1 is s2) # False 值相等&#xff0c;引用地址不相…...

STM32学习笔记1---LED,蜂鸣器

目录 GPIO LED 蜂鸣器 RCC外设 GPIO外设 总概 操作STM32的GPIO 代码 LED闪烁 LED流水灯 蜂鸣器&#xff01; 连接方式 GPIO GPIO输出&#xff1a;向外驱动控制 GPIO输入&#xff1a;读取&#xff0c;捕获&#xff08;信息&#xff09;&#xff08;控制&#xff09…...

动手学强化学习 第 15 章 模仿学习 训练代码

基于 https://github.com/boyu-ai/Hands-on-RL/blob/main/%E7%AC%AC15%E7%AB%A0-%E6%A8%A1%E4%BB%BF%E5%AD%A6%E4%B9%A0.ipynb 理论 模仿学习 修改了警告和报错 运行环境 Debian GNU/Linux 12 Python 3.9.19 torch 2.0.1 gym 0.26.2 运行代码 #!/usr/bin/env pythonimpor…...

第一阶段面试问题(前半部分)

1. 进程和线程的概念、区别以及什么时候用线程、什么时候用进程&#xff1f; &#xff08;1&#xff09;线程 线程是CPU任务调度的最小单元、是一个轻量级的进程 &#xff08;2&#xff09;进程 进程是操作系统资源分配的最小单元 进程是一个程序动态执行的过程&#xff0c;包…...

《数学教学通讯》是一本怎样的刊物?投稿难吗?

《数学教学通讯》是一本怎样的刊物&#xff1f;投稿难吗&#xff1f; 《数学教学通讯》是一本具有较高学术价值的教育类刊物。它创刊于 1979 年&#xff0c;由西南大学主管&#xff0c;西南大学数学与统计学院、重庆市数学学会主办&#xff0c;出版周期为旬刊。该刊物在国内外…...

<机器学习> K-means

K-means定义 K-means 是一种广泛使用的聚类算法&#xff0c;旨在将数据集中的点分组为 K 个簇&#xff08;cluster&#xff09;&#xff0c;使得每个簇内的点尽可能相似&#xff0c;而不同簇的点尽可能不同。K-means 算法通过迭代的方式&#xff0c;逐步优化簇的分配和簇的中心…...

php wordpress教学/女教师遭网课入侵视频

http://www.sohu.com/a/311437451_267106 &#xff08;江南水乡&#xff09; 编辑 讨论1中国人所说的“水乡”&#xff0c;一般是指“江南水乡”。中国的江南&#xff0c;大体上是指浙江&#xff0c;上海&#xff0c;安徽&#xff0c;江西和江苏长江以南地区&#xff0c;主要城…...

顺德做网站那家好/新闻热点事件

我正在研究“Python For Data Analysis”,我不了解特定的功能.添加两个pandas系列对象将自动对齐索引数据,但如果一个对象不包含该索引,则返回为NaN.例如来自书&#xff1a;a Series([35000,71000,16000,5000],index[Ohio,Texas,Oregon,Utah])b Series([NaN,71000,16000,3500…...

金华住房和城乡建设厅网站/爱站工具包官网

静态调用如果需要使用内置的规则验证单个数据&#xff0c;可以使用静态调用的方式。控制器验证如果你需要在控制器中进行验证&#xff0c;并且继承了\think\Controller的话&#xff0c;可以调用控制器类提供的validate方法进行验证&#xff0c;如下&#xff1a;如果定义了验证器…...

柳州专业网站建设加盟/西安优化外

骨架屏 最近在项目不时有用到骨架屏的需求,所以抽时间对骨架屏的方案作了一下调研,骨架屏的实践已经有很多了,也有很多人对自己的方案作了介绍.在这里按照个人的理解做了一个汇总和分类,分享给大家. 关于骨架屏(简介) 骨架屏就是在页面数据尚未加载前先给用户展示出页面的大…...

上海网站建设公司哪家好?/广告优化

源码介绍请注意&#xff1a;该源码来源网友分享&#xff0c;素材虎不提供技术支持&#xff0c;没有技术能力的小白勿拍。(如需安装服务费用另算)这套TPfang房产今天看到了就拿出来测试无奈里面没教程只能自己摸索&#xff0c;搞来搞去吧页面显示出来了确找不到后台地址&#xf…...

做网站用win还是li/网站制作费用

从新记录一下自己经常要用到的模块&#xff0c;也是必写的模块。 mian.c #include <sys.h>void main() {InitSystem();while(1){KeyScans();Operate_key_val();DisplayBit(0,1);Led(1,0);BMR(0x50,1);} } sys.c #include <sys.h>void Select_74HC138(uchar cha…...