Redis 7 常用数据结构

news2024/11/27 20:58:18

10大数据结构图示

10大数据类型:

  • redis字符串(String)
  • redis列表(ist)
  • redis哈希表(Hash)
  • redis集合(Set)
  • redis有序集合(ZSet)
  • redis地理空间(GEO)
  • redis基数统计(HyperLogLog)
  • redis位图(bitmap)
  • redis位域(bitfield)
  • redis流(Stream)

Redis键(key)

命令不区分大小写,而key是区分大小写的

 案例:

keys *    ==>        查看当前库所有的key
exists key    ==>        判断某个key是否存在
type key    ==>        查看你的key是什么类型
del key    ==>        删除指定的key数据
unlink key    ==>        非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作。
ttl key    ==>        查看还有多少秒过期,-1表示永不过期,-2表示已过期
expire key 秒钟    ==>        为给定的key设置过期时间D
move key dbindex [0-15]    ==>        将当前数据库的key移动到给定的数据库db当中
select dbindex    ==>        切换数据库[0-15],默认为0
dbsize    ==>        查看当前数据库key的数量
flushdb    ==>        清空当前库
flushall    ==>        通杀全部库

永远的帮助命令,help@类型

案例:

help @string
help @list
help @hash
help @hyperloglog

............

Redis常见数据类型操作命令

中文:Redis命令中心(Redis commands) -- Redis中国用户组(CRUG)

英文:Commands | Redis

1、Redis字符串(String)

string是redis最基本的类型,一个key对应一个value。

 

string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象 。

 

string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

常用:(单值单value

案例

最常用

set key value

set key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]

如何获得设置指定的 Key 过期的 Unix 时间,单位为秒:

System.out.println(Long.toString(System.currentTimeMillis()/1000L));

keepttl

 

get key

同时设置/获取多个键值

MSET key value [key value ....]
MGET key [key ....]
mset / mget / msetnx

mset:同时设置一个或多个 key-value 对。

 mget:获取所有(一个或多个)给定 key 的值。

msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 

获取指定区间范围内的值

getrange / setrange

getrange:获取指定区间范围内的值,类似between......and的关系,从零到负一表示全部

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

数值增减

一定要是数字才能进行加减
递增数字      ==>    INCR key
增加指定的整数    ==>    INCRBY key increment
递减数值      ==>    DECR key
减少指定的整数    ==>    DECRBY key decrement

获取字符串长度和内容追加

STRLEN key
APPEND key value

分布式锁

setnx key value

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

setex:设置带过期时间的key,动态设置。(setex 键 秒值 真实值)

setnx:只有在 key 不存在时设置 key 的值。

getset(先get再set)

getset:将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

简单一句话,先get然后立即set

应用场景

a、比如抖音无限点赞某个视频或者商品,点一下加一次

b、是否喜欢的文章

阅读数:只要点击了rest地址,直接可以使用incr key 命令增加一个数字1,完成记录数字。

2、Redis列表(list)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

它的底层实际是个双端链表,最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)

3、Redis哈希表(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

 

Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)

4、Redis集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是 intset 或者 hashtable。

 

Redis 中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

 

集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)

5、Redis有序集合(ZSet)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。

 

zset的成员是唯一的,但分数(score)却可以重复。

 

zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2^32 - 1

6、Redis地理空间(GEO)

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,包括:

1、添加地理位置的坐标。

2、获取地理位置的坐标。

3、计算两个位置之间的距离。

4、根据用户给定的经纬度坐标来获取指定范围内的地理位置集合

7、Redis基数统计(HyperLogLog)

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

 

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

 

但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

8、Redis位图(bitmap)

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

9、Redis位域(bitfield)

通过bitfield命令可以一次性操作多个比特位域(指的是连续的多个比特位),它会执行一系列操作并返回一个响应数组,这个数组中的元素对应参数列表中的相应操作的执行结果。

 

说白了就是通过bitfield命令我们可以一次性对多个比特位域进行操作。

10、Redis流(Stream)

Redis Stream 是 Redis 5.0 版本新增加的数据结构。

Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。

简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息。

而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失

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

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

相关文章

Burp代理单个站点

这里写自定义目录标题 Burp代理问题解决代理单个站点(核心) Burp代理问题 平时进行渗透的时候为浏览器挂上代理后往往全部站点都进行代理,有很多没用的包被抓到,影响测试,且和在burp上设置单个站点抓包比较麻烦。 解…

奥威BI云星空标准方案:部署快、一站式的SaaS BI解决方案

奥威BI云星空标准方案是一种基于奥威BI数据云(SaaS平台)的商业智能解决方案,提供一站式的销售管理、客户关系管理、人力资源管理、财务管理等业务流程。该方案提供了从数据连接、数据建模到数据分析与价值挖掘的全链路数据应用服务&#xff0…

[AJAX]使用fetch发送请求

fetch是浏览器原生的函数,不需要像原生AJAX新建实例就可以用于发送AJAX请求。 支持Promise获取异步的HTTP响应,和支持流式获取。 服务端代码 // 服务端准备 // 1、引入express const express require(express); // 2、创建应用对象 const app expre…

springcloud+docker+k8s发布脚本

项目结构如图: Dockerfile 文件 构建镜像: #基础镜像,如果本地仓库没有,会从远程仓库拉取 openjdk:8 FROM openjdk:8 #暴露端口 EXPOSE 9301 #容器中创建目录 RUN mkdir -p /usr/local/java #编译后的jar包copy到容器中创建到目录…

PyTorch的安装(ANACONDA+PyCharm)

文章目录 一、概念1.什么是PyTorch2.什么是ANACONDA3.什么是PyCharm 二、PyTorch的安装1.安装ANACONDA和PyCharm(一路Next即可)2.将ANACONDA与pycharm进行配置3.安装pytorch环境 一、概念 1.什么是PyTorch PyTorch是一个开源的机器学习框架&#xff0c…

软件测试需求分析方法

目录 前言: 1.1 什么是测试需求? 1.2 为什么要做测试需求? 2.测试需求分析方法 2.1 测试需求分析依据 2.2 测试需求架构划分 2.3 测试需求分析过程 2.3.1 测试需求收集 2.3.1.1 测试类型划分 2.3.1.2 测试类型细化 2.3.1.3 生成测…

华为OD机试真题 Python 实现【查找重复代码】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、Python算法源码五、效果展示1、输入2、输出 一、题目描述 小明负责维护项目中的代码,需要查找出重复代码,用以支撑后续的代码优化,请你帮助小明找出重复的代码。 重复代码查找方法&#xff1…

高频前端面试题汇总之JavaScript篇

近期整理了一下高频的前端面试题,分享给大家一起来学习。如有问题,欢迎指正! 前端面试题系列文章: 【1】「2021」高频前端面试题汇总之HTML篇 【2】「2021」高频前端面试题汇总之CSS篇 【3】「2021」高频前端面试题汇总之Java…

超详细,Pytest自动化测试框架 token全局设置-多套环境使用(实战)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 在做自动化测试时…

LAMP环境搭建

文章目录 LAMP环境搭建LAMP概述LAMP搭建安装Apache服务器安装mariadb(mysql)安装PHP PHP连接MySQLLAMP搭建论坛 LAMP环境搭建 LAMP概述 LAMP是一个常用的Web应用程序开发和部署平台,它是由以下四个开源软件的首字母组成: Linux(操作系统&a…

【开发问题】sqlserver怎么开启cdc

怎么开启 执行sql1、创建cdc​2.如上执行完毕之后&#xff0c;会在<database_name>数据库下的“系统表”中创建如下六个系统表&#xff1a;3.验证SQLServer库级别CDC是否启用4.启用SQLServer表级别CDC功能&#xff08;针对某一张表&#xff09;5、验证SQLServer表级别是否…

计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势相关技术与方法介绍系统分析总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现 摘要 本文介绍了基于微信小程序和云开发的小区垃圾分类知识手…

智慧餐厅系统(外卖、堂食)

智慧餐厅是基于物联网和云计算技术为餐饮店量身打造的智能管理系统&#xff0c;通过客人自主点餐系统、服务呼叫系统、后厨互动系统、前台收银系统、预定排号系统以及信息管理系统等可显著节约用工数量、降低经营成本、提升管理绩效。 系统功能介绍 客户端 1、自助点餐系统&…

JavaScript(基础语法篇)

目录 初识 JavaScript JavaScript 是什么 发展历史 JavaScript 和 HTML 和 CSS 之间的关系 JavaScript 运行过程 JavaScript 的组成 前置知识 JavaScript 的书写形式 1. 行内式 2. 内嵌式 3. 外部式 注释 输入输出 输入: prompt 输出: alert 选择框&#xff1a…

如何用 TDengine 预测 “未来”

介绍 TDengine™ 是一种开源的云原生时序数据库&#xff08;Time Series Database&#xff0c;TSDB&#xff09;&#xff0c;专为物联网&#xff08;IoT&#xff09;、连接汽车和工业物联网进行了优化。它能够高效地实时摄取、处理和监控一天内由数十亿个传感器和数据收集器产…

美女小姐姐是你得菜吗~PYTHON采集西瓜小姐姐

目录标题 前言第三方模块&#xff1a;环境介绍:基本流程:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 第三方模块&#xff1a; requests >>> pip install requests 第三方模块安装: win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉…

Matlab|改进的粒子群算法优化支持向量机(多分类)

作者在前面的文章中介绍了粒子群算法的原理及其2种改进算法&#xff0c;本文将基于这三种优化方法&#xff0c;应用于支持向量机进行分类&#xff0c;并对比改进算法与标准粒子群算法的分类性能&#xff0c;结果显示改进后的方法能够得到更佳的分类效果。&#xff08;在对PSO-S…

小程序实现自定义分享微信好友

首先在全局page.json中添加"shareAppMessage": true {"path": "pages/brandCoupon/brandCoupon","style": {"navigationBarTitleText": "霸王餐","navigationStyle": "custom","enable…

3D建模软件、Creo 3D 、Creo8安装、下载教程

PTC Creo 8.0 是一款三维 CAD 软件&#xff0c;适用于多个行业和应用场景&#xff0c;包括机械设计、工业设计、电子设计等等。以下是 PTC Creo 8.0 的功能介绍和安装条件&#xff1a; 功能介绍&#xff1a; 三维建模&#xff1a;可以使用多种工具进行三维建模&#xff0c;包…

【python】生成时间戳+读取csv最后一列+生成一组随机数

1.按照间隔生成时间戳,并保存为csv文件 ##### 按照间隔生成时间戳,并保存为csv文件 import pandas as pd from datetime import datetime, time, timedelta times [] ts datetime(2023, 6, 17, 9, 10, 0) while ts < datetime(2023, 6, 17, 9, 26, 40):# times.append(t…