redis03 八种数据类型

思维草图 

String类型 

字符串类型,是redis中最简单的存储类型,可以包含任何数据,例如jpg图片或者序列化的对象等,底层都是以字节数组形式存储,最大能存储512MB的数据。

常用命令

KEY命名规范

加前缀,分层次分模块构建,更方便管理

项目名:业务名:类型:id

如定义

project:user:1
project:equipment:1

根据具体项目规范来定义key值。

如果value是一个Java对象,可以先将对象序列化成Json再存入,这样后面取出来操作也非常方便。

Hash类型 

String类型是将对象序列化成JSON字符串后进行存储,当需要进行修改对象中的某个字段时非常不方便。

Hash类型可以将对象中的每个字段独立存储,可以针对单个字段进行CRUD操作,非常适合用来存储对象

KEYVALUE
fieldvalue
user:12138id        12138
name路明非
age18

常用命令

List类型

一个双向链表结构。

特征

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表,系统的实时信息变化(网络、内存、cpu)

常用命令

Set类型

可以看做是一个value为null的HashMap。

特征

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

常用命令

ZSet类型 

可排序的set集合,ZSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。

特征

  • 可排序
  • 元素不可重复
  • 查询速度快

因为SortedSet的可排序特性(从小到大排序 ),经常被用来实现排行榜这样的功能

常用命令

所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如: 

升序获取sorted  set  中的指定元素的排名:   ZRANK  key  member

降序获取sorted  set  中的指定元素的排名:   ZREVRANK  key  memeber

HyperLogLogs基数统计

A = {1, 2, 3, 4, 5}

B = {3, 5, 6, 7, 9}

那么基数(不重复的元素)= {1, 2, 4, 6, 7, 9}

允许容错,即可以接受一定误差,可以是一个带有 0.81% 标准错误的近似值

Bitmap位存储

操作二进制位来进行记录,只有0和1两个状态。

可以用来统计用户登录、未登录,打开、未打卡。两个状态的,都可以使用Bitmap。

比如存储一年的打卡状态需要的内存,365天=365bit,1字节 = 8bit,大概需要 46个字节左右。

如使用bitmap来记录 周一到周日的打卡 0表示未打卡,1表示打卡

查看某一天是否有打卡

统计这一周的打卡情况

geospatial地理位置

这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人。

地理位置查询网址

传送门icon-default.png?t=N7T8http://www.jsons.cn/lngcode/

添加地址的经纬度 

注意

  • 有效的经度从-180度到180度。
  • 有效的纬度从-85.05112878度到85.05112878度。

当坐标位置超出上述指定范围时,该命令将会返回错误。

获取指定的成员的精度和纬度

计算两地之间的距离

 获取附近以(100, 30)这个坐标为中心,寻找半径为10000km的城市

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

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

相关文章

适配器模式 详解 设计模式

适配器模式 适配器模式是一种结构型设计模式,其主要作用是解决两个不兼容接口之间的兼容性问题。适配器模式通过引入一个适配器来将一个类的接口转换成客户端所期望的另一个接口,从而让原本由于接口不匹配而无法协同工作的类能够协同工作。 结构 适配…

Revit-二开之创建FilledRegion-(2)

Revit-二开之创建FilledRegion FilledRegion在Revit注释模块中,具体位置如图所示 图中是Revit2018版本 Revit绘制FilledRegion 在此文中我们通过创建矩形填充区域为例 继上图操作后在修改面板中选择【绘制】中的矩形,如下图所示 在空白的平面视图中拖…

2024年领取腾讯云优惠券的方法有哪些?程序员爆肝整理

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

springboot基于web的网上摄影工作室的开发与实现论文

网上摄影工作室 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了网上摄影工作室的开发全过程。通过分析网上摄影工作室管理的不足,创建了一个计算机管理网上摄影工作室的方案。文章介绍了网上摄影工…

2024最新算法:河马优化算法(Hippopotamus optimization algorithm,HO)求解23个基准函数,提供MATLAB代码

一、河马优化算法 河马优化算法(Hippopotamus optimization algorithm,HO)由Amiri等人于2024年提出,该算法模拟了河马在河流或池塘中的位置更新、针对捕食者的防御策略以及规避方法。河马优化算法的灵感来自河马生活中观察到的三…

chatgpt-3的文章生成器有哪些?可以批量生成文章的生成器

GPT-3(Generative Pre-trained Transformer 3)作为人工智能领域的一项重大突破,开启了新一代的文本生成技术。同时市面上也涌现出了一些GPT-3文章生成器,为用户提供了快速、高效地生成各种类型文章的工具。本文将介绍一些中国的GP…

nest.js使用nest-winston日志一

nest-winston文档 nest-winston - npm 参考:nestjs中winston日志模块使用 - 浮的blog - SegmentFault 思否 安装 cnpm install --save nest-winston winstoncnpm install winston-daily-rotate-file 在main.ts中 import { NestFactory } from nestjs/core; im…

HarmonyOS—编译构建概述

编译构建是将应用/服务的源代码、资源、第三方库等,通过编译工具转换为可直接在硬件设备上运行的二进制机器码,然后再将二进制机器码封装为HAP/APP软件包,并为HAP/APP包进行签名的过程。其中,HAP是可以直接运行在模拟器或真机设备…

【数据结构】实现队列

大家好,我是苏貝,本篇博客带大家了解队列,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 队列的概念及结构二. 队列的实现队列的结构体初始化销毁队尾插入队头删除显示第一个节点的值…

C++菱形继承_多态

💓博主CSDN主页:麻辣韭菜-CSDN博客💓   ⏩专栏分类:http://t.csdnimg.cn/362T6⏪   🚚代码仓库:要相信光/C高阶🚚   🌹关注我🫵带你学习更多C知识   🔝🔝 目录 前言…

【Excel PDF 系列】EasyExcel + iText 库实现 Excel 转换 PDF

你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,欢迎指教: 企鹅:869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …

2024第二次培训:win11系统下使用nginx、JDK、mysql搭建基于vue2、java前后端分离的web应用运行环境

一.背景 公司安排了带徒弟的任务,给培训写点材料。前面分开介绍了mysql、jdk、nginx的安装,都只是零星的介绍,只能算零散的学习。学习了有什么用呢?能解决什么问题?能完成什么工作? 今天我们要用之前的几篇…

TCP/UDP,HTTP、HTTPS存在什么风险会影响到网络安全吗

近年来,随着网络技术的飞速发展,互联网影响人们的方方面面,我们平时也接触到许多以前从未听过的东西,今天德迅云安全就来分享下一些互联网安全知识,讲解一些关于常看到的关于IP, TCP/UDP,HTTP、HTTPS这些名…

Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略

前言 随着容器技术的日益成熟,Docker已经成为现代软件开发和部署的标配工具。其中,自定义Docker镜像是满足特定项目需求的关键步骤。特别是在Java开发环境中,我们可能需要为不同的项目配置不同版本的JDK。这时,通过Docker自定义J…

venv、pip、conda、anaconda、miniconda的区别和优缺点,和彻底清除python多余的环境

virtualenv(venv) 这是一个虚拟环境管理器,它可以让你每个项目甚至每个脚本配置一个自定义的Python解释器环境,这最大的好处是我可以不污染开发环境。​ pip pip 是 Python 最常用的包管理器,它能自动处理依赖 。 conda 如果说venv是虚拟…

langchain学习笔记(九)

RunnableBranch: Dynamically route logic based on input | 🦜️🔗 Langchain 基于输入的动态路由逻辑,通过上一步的输出选择下一步操作,允许创建非确定性链。路由保证路由间的结构和连贯。 有以下两种方法执行路由 1、通过Ru…

S2---FPGA-A7板级原理图硬件实战

视频链接 FPGA-A7板级系统硬件实战01_哔哩哔哩_bilibili FPGA-A7板级原理图硬件实战 基于XC7A100TFGG484的FPGA硬件设计流程图 A7核心板,是基于XILINX公司的ARTIX-7系列100T的XC7A100T,2FGG484I这款芯片开发的高性能核心板,具有高速,高带宽&a…

wpa_supplicant交叉编译

文章目录 源码编译openssl编译libnl交叉编译WPA 开发板测试使用 源码 wpa_supplicant官网:http://w1.fi/wpa_supplicant/ GIT源:git://w1.fi/hostap.git openssl 源码: https://www.openssl.org/ libnl 源码: https://github.c…

QT之液晶电子时钟

根据qt的<QLDNumber>做了一个qt液晶电子时钟. 结果 实时显示当前时间,左键可以拖动时钟在屏幕的位置,右键点击关闭显示. 实现过程 新建一个class文件,让这个文件的父类是QLCDNumber 相关功能变量定义和函数实现 .c文件代码 这里需要注意的一点是event->button是获取的…

力扣SQL50 产品销售分析 I 查询

Problem: 1068. 产品销售分析 I 思路 left join on&#xff1a;左连接 Code select p.product_name, s.year, s.price from Sales s left join Product p on s.product_id p.product_id