Redis 的数据类型和命令帮助
文章结构
- Redis 数据类型
- 1. Redis全局命令(跟key有关系,而跟value无关)
- 2. Strings
- Getting and setting Strings
- Managing counters
- 3. Lists(L)
- Basic commands
- Blocking commands
- 4. Sets(S)
- Basic commands
- 5. Hashes(H)
- Basic commands
- 6. Sorted sets(Z)
- Basic commands
- 7. Bitmaps
- Basic commands
- 8. HyperLogLog(pf开头,发明算法的人的简写)
- Basic commands
- 9. Geospatial(Geo)
- Basic commands
- Redis 应用
- Reids 命令帮助或资源
Redis 数据类型
在 redis7 版本中,数据类型有 10 种
- 常规的 5 种数据类型(Strings、Lists、Sets、Sorted sets、Hashs)
- 5 种不常见的(Geospatial、Streams、HyperLogLog、Bitmaps、Bitfields)
备注:本文只介绍其中标粗的常用部分
官方参考
# 各种数据类型总览(含总览和详细命令参考)
https://redis.io/docs/data-types/# 官方数据类型教程
https://redis.io/docs/data-types/tutorial/# 官方在线尝试及人门教程
https://try.redis.io/
以下的数据类型介绍参考了官网
1. Redis全局命令(跟key有关系,而跟value无关)
注意:下面的这些命令跟 value 的无关,只跟 key 有关系
-
Keys pattern
-
Exists key
-
del key
-
Expire key second
-
Ttl key
-
Type key
2. Strings
Getting and setting Strings
-
SET
stores a string value -
GET
retrieves a string value -
SETNX
stores a string value only if the key doesn’t already exist. Useful for implementing locks对于实现锁很有用
-
MGET
retrieves multiple string values in a single operation
Managing counters
-
INCRBY
atomically increments (and decrements when passing a negative number) counters stored at a given key为什么要有
INCR
等这些命令,因为它们是原子的举例:
> INCR views:page:2 (integer) 1 > INCRBY views:page:2 10 (integer) 11
3. Lists(L)
redis 的 list 用的是链表结构!
用途:
1、记住最新的更新(如网络上的最近10条数据)
记住最新的记录(如lpush和ltrim和lrange的配合可以获取最新的记录,ltrim会删除范围外的其他数据只保留范围内的最新记录)
2、2个进程的交流(如生产者消费者)
Basic commands
LPUSH
adds a new element to the head of a list;RPUSH
adds to the tailLPOP
removes and returns an element from the head of a list;RPOP
does the same but from the tails of a listLLEN
returns the length of a listLMOVE
atomically moves elements from one list to anotherLTRIM
reduces a list to the specified range of elements
Blocking commands
常用于生产者消费者模式???
支持不同的阻塞命令
-
BLPOP
removes and returns an element from the head of a list. If the list is empty, the command blocks until an element becomes available or until the specified timeout is reached要么阻塞要么超时
4. Sets(S)
唯一,但是无序
Basic commands
-
SADD
adds a new member to a set -
SREM
removes the specified member from the set -
SISMEMBER
tests a string for set membership -
SINTER
returns the set of members that two or more sets have in common (i.e., the intersection)交集:sinter
差集:sdiff
并集:sunion
-
SCARD
returns the size (a.k.a. cardinality) of a set
5. Hashes(H)
非常适合代表“对象”、效率非常高效
Basic commands
HSET
sets the value of one or more fields on a hashHGET
returns the value at a given fieldHMGET
returns the values at one or more given fieldsHINCRBY
increments the value at a given field by the integer provided
6. Sorted sets(Z)
既有 set 的特征(key不重复)也有 hash 的特征(score,一个key对应一个分数)
基本同set,但是有一个分数;所以非常适合用于获取范围的元素,例如:前10,最后10个
Basic commands
-
ZADD
adds a new member and associated score to a sorted set. If the member already exists, the score is updated -
ZRANGE
returns members of a sorted set, sorted within a given range -
ZRANK
returns the rank of the provided member, assuming the sorted is in ascending order排名:获取前多少的元素
-
ZREVRANK
returns the rank of the provided member, assuming the sorted set is in descending order
7. Bitmaps
是 String 数据类型的拓展,可以对象 string 像一个 bit 的向量;因为只能设置 0 和 1,所以适合是否判断的情况
1、操作上分为两组:设置获取值和对组的统计(统计值)
2、判断是否时,提供极大的空间节省(比如配合自增长id,就可以使用512M的空间判断4亿人是否在位图中)
Basic commands
-
SETBIT
sets a bit at the provided offset to 0 or 1 -
GETBIT
returns the value of a bit at a given offset -
BITOP
lets you perform bitwise operations against one or more strings备注:位操作
8. HyperLogLog(pf开头,发明算法的人的简写)
是一个概率性的数据结构,用来估算一个 set 的基数(基数就是不重复元素),是一种概率算法存在一定的误差,占用内存只有12kb但是非常适合超大数据量的统计,比如网站访客的统计
Basic commands
-
PFADD
adds an item to a HyperLogLog -
PFCOUNT
returns an estimate of the number of items in the set返回基数的估算值
-
PFMERGE
combines two or more HyperLogLogs into one
9. Geospatial(Geo)
地理位置坐标,即经纬度
Basic commands
-
geoadd:添加地理位置的坐标
-
geopos:获取地理位置的坐标
-
geodist:计算两个位置之间的距离
-
georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合
以某个点为中心,半径多少的范围
-
geohash:返回一个或多个位置对象的 geohash 值
备注:
1、返回 hash 值是为了不丢失精度
2、可以根据返回的 hash 值反向计算出经纬度
Redis 应用
案例 1:生成一个 6 为数字的验证码,每天只能发送 3 次,5 分钟内有效
1、生成 6 个数字验证码(randon类)
2、计数的工具(redis的incr。 并且设计过期时间为24 * 60 * 60秒)
3、吧生成的验证码放入 redis 中
步骤:
1、校验是否满足次数要求
2、生成验证码放入 redis,并修改次数
3、对用户提交的验证码做
Reids 命令帮助或资源
Redis 官网:https://redis.io
源码地址:https://github.com/redis/redis
Redis 在线测试:http://try.redis.io
Redis 命令参考:http://doc.redisfans.com、https://redis.io/commands(把命令按类 group 进行了分组)
获取 Redis 命令帮助:
1、直接用命令行获取参数的帮助
2、在官方文档的命令帮助中可按组(group)或命令(command)直接查询
传送门:保姆式Spring5源码解析
欢迎与作者一起交流技术和工作生活
联系作者
相关文章:

Redis 的数据类型和命令帮助
文章结构 Redis 数据类型1. Redis全局命令(跟key有关系,而跟value无关)2. StringsGetting and setting StringsManaging counters 3. Lists(L)Basic commandsBlocking commands 4. Sets(S)Basic commands 5. Hashes(H)Basic commands 6. Sort…...
【C++11】智能指针
什么是智能指针: 智能指针是一个类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏。动态分配的资源,交给一个类对象去管理,当类对象声明周期结束时,自动调用析构函…...

三、Go的常用命令以及Go的执行原理
Go的执行原理以及Go的命令 一、Go的源码文件 Go 的源码文件分类: 如上图,分为三类: 1、命令源码文件: 声明自己属于 main 代码包、包含无参数声明和结果声明的 main 函数。 命令源码文件被安装以后,GOPATH 如果…...

ESP32 CAM 模块和 OpenCV 的二维码扫描器
概述 该项目是关于使用 ESP32 CAM 模块和 OpenCV 设计的二维码扫描仪或阅读器。我们将使用 ESP32 摄像头模块和 python 库开发一个程序和设备,我们可以用它来扫描二维码。使用 ESP32 CAM,项目变得更便宜。 QR 码现在已经成为我们日常生活的一部分,因为我们几乎在任何地方都…...

多链路传输技术在火山引擎 RTC 的探索和实践
动手点关注 干货不迷路 传统的数据传输方式大多是利用一个链路、选择设备的默认网卡进行传输,使用这种方式实现实时音视频通话时,如果默认网络出现问题(如断网、弱网等),用户的通信就会发生中断或者卡顿,影…...

在Flask中构建API接口
重定向行为 斜杠 以下两个路由的不同之处在于是否使用尾部的斜杠。 第一个路由的URL尾部有一个斜杠,看起来就像一个文件夹,访问一个没有斜杠结尾的URL时,Flask会自动进行重定向,在结尾加上一个斜杠。 第二个路由的URL没有尾部…...

Postgres vs MySQL
主要区别及示例 简而言之,Postgres 和 MySQL 之间的主要区别实际上归结为主索引和辅助索引的实现方式以及数据的存储和更新方式。 让我们进一步探讨这个问题。 但首先... 基础知识 索引是一种数据结构(主要是 B 树),允许通过…...
02.IP地址以及静态路由配置
文章目录 IP地址IP地址分类IPV4地址(32位)IPV4地址的分类特殊IP地址 VLSM --- 可变长子网掩码(子网划分)CLDR --- 无类域间路由(汇总)配置静态路由的基础配置静态路由的拓展配置 IP地址 IP地址分类 IPV4(32位二进制构成) — 点分十进制IPV6(128位二进制构成) — 冒分十六进制…...
GD32(STM32)因为中断问题,导致不能进行程序 正常运行
项目中,之前定时器中断就用了个TIM2,但后来程序优化需要再加一个计数定时器TIM6, TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; // 开启定时器时钟,即内部时钟CK_INT72M RCC_APB1PeriphClockCmd(RCC_APB1Perip…...

华为OD机试真题B卷 Java 实现【统计字符】,附详细解题思路
一、题目描述 输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。 数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000 。 二、输入描述 输入一行字符串,可以有空格。 三、输出描述 统计其中英文字符&#…...
深入理解设计原则之开闭原则(OCP)
系列文章目录 C高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C并发线程编程 OCP:开闭原则 系列文章目录1、开闭原则的定义和解读2、如何理解“对扩展开放,对修改关闭”3、实现开闭原则的方法4、如何在团队协作中保证开闭原则的实…...

【学习随笔】
2022/11/13 HTML :讲完了 css:讲完了 作业:编写登陆界面、整理一下sql优化,对于mybatis不熟练的继续练习 关于MySQL优化的问题? 思路总结:主要考虑数据库优化与SQL语句优化。 1,数据库优化,包括存储引擎的优化&…...
【多路IO复用】select
select: 1.select:当被监听的 fd(文件描述符)就绪后会返回,但是我们无法知道具体是哪些 fd 就绪了,只能遍历所有的 fd。通常来说某一时刻,就绪的 fd 并不会很多,但是使用 select 必须要遍历所有…...

cuda编程学习——基础知识介绍!干货向(三)
本文主要内容为介绍CUDA编程前的一些基础知识 参考资料: 高升博客 《CUDA C编程权威指南》 以及 CUDA官方文档 文章、讲解视频同步更新公众《AI知识物语》,B站:出门吃三碗饭 1:并行计算 并行程序可以分为 指令并行࿱…...

30 VueComponent 事件的绑定
前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 用例如下, 我们这里核心关注 事件的处理流程 问题的调试 整个…...
作用域及作用域链
作用域 隔离变量的集合 作用域最大的用处就是隔离变量,不同作用域内的同名变量不会有命名冲突。 作用域类型 全局作用域,函数作用域和块级作用域。 1)全局作用域,在整个代码文件中都可以访问的作用域。 2)函数作用域…...

深入解析Linux C/C++ 编程中的内存泄漏问题
深入解析Linux C/C 编程中的内存泄漏问题 I. 前言 (Introduction)1.1 文章目的与内容概述 (Purpose and Overview of the Content)1.2 重要性和实用性的说明 (Significance and Practicality Explanation)1.3 数据结构与内存泄漏的基本概念 (Basic Concepts of Data Structure …...
【爬虫第三章】 Python基础
预计更新一、 爬虫技术概述 1.1 什么是爬虫技术 1.2 爬虫技术的应用领域 1.3 爬虫技术的工作原理 二、 网络协议和HTTP协议 2.1 网络协议概述 2.2 HTTP协议介绍 2.3 HTTP请求和响应 三、 Python基础 3.1 Python语言概述 3.2 Python的基本数据类型 3.3 Python的流程控制语句 3…...

电力系统的虚假数据注入攻击和MTD系统研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【阿里云】阿里云OSS对象存储— 开通OSS服务、搭建OSS环境、快速入门
目录 一、开通OSS服务 二、搭建OSS环境 1、创建Bucket存储空间 2. 创建文件夹上传图片 3. RAM 访问控制 三、快速入门 1.下载SDK 2.创建存储空间[可选] 3.上传图片 一、开通OSS服务 二、搭建OSS环境 1、创建Bucket存储空间 选择 Bucket列表,进行Bucket创建…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)
旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...
webpack面试题
面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...

边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...

react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架
1、菜单文件treeTop.js // 顶部菜单 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定义菜单项数据 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 权限管理,key: 2,icon:…...

JUC并发编程(二)Monitor/自旋/轻量级/锁膨胀/wait/notify/锁消除
目录 一 基础 1 概念 2 卖票问题 3 转账问题 二 锁机制与优化策略 0 Monitor 1 轻量级锁 2 锁膨胀 3 自旋 4 偏向锁 5 锁消除 6 wait /notify 7 sleep与wait的对比 8 join原理 一 基础 1 概念 临界区 一段代码块内如果存在对共享资源的多线程读写操作…...

C++ Saucer 编写Windows桌面应用
文章目录 一、背景二、Saucer 简介核心特性典型应用场景 三、生成自己的项目四、以Win32项目方式构建Win32项目禁用最大化按钮 五、总结 一、背景 使用Saucer框架,开发Windows桌面应用,把一个html页面作为GUI设计放到Saucer里,隐藏掉运行时弹…...