Redis7 数据类型

Redis7 数据类型

img

文章目录

  • Redis7 数据类型
    • 1. Redis键(Key)
    • 2. Redis字符串(String)
    • 3. Redis列表(List)
    • 4. Redis哈希表(Hash)
    • 5. Redis集合(Set)
      • 5.1 常用操作
      • 5.2 集合运算
    • 6. Redis有序集合(Sorted Set)
      • 6.1 常用操作
      • 6.2 高级操作
    • 7. Redis位图(BitMap)
      • 7.1 位图操作
    • 8. Redis基数统计(HyperLogLog)
      • 8.1 HyperLogLog操作
    • 9. Redis地理空间(GEO)
      • 9.1 地理空间操作
    • 10. Redis流(Stream)
      • 10.1 流操作

1. Redis键(Key)

Redis键是存储在Redis中的数据项的名称。以下是一些常用的键操作命令:

  • keys *:查看当前数据库的所有键。
  • exists key:判断某个键是否存在。
  • type key:查看键的类型。
  • del key:删除键。
  • unlink key:非阻塞删除,仅删除keyspace元数据,真正删除在后续异步进行。
  • ttl key:查看还有多少秒过期。
  • expire key 秒钟:给指定键设置过期时间。
  • move key dbindex [0-15]:将键转移到指定数据库(Redis默认分为16个数据库,默认打开是0)。
  • select dbindex [0-15]:切换到指定数据库。
  • dbsize:查看当前数据库key数量。
  • flushdb:清空当前库。
  • flushall:通杀所有库。

2. Redis字符串(String)

  • set key value:设置键的值。
  • get key:获取键的值。
  • mset key value key value ...:同时设置多个键的值。
  • mget key key ...:同时获取多个键的值。
  • getrange key index1 index2:获取value的index1-index2位置的值。
  • setrange key index value:用value替换index处的值。
  • incr key:将键的值增加1。
  • decr key:将键的值减1。
  • strlen key:获取键的值的长度。
  • append key value:将value追加到键的值的末尾。
  • getset key value:将键的值设置为value,并返回旧值。

3. Redis列表(List)

Redis列表是一个有序集合,允许在列表的两端添加或移除元素。

  • lpush key v1 v2 ...:在列表的左侧添加一个或多个元素。
  • rpush key v1 v2 ...:在列表的右侧添加一个或多个元素。
  • lrange key index1 index2:获取列表中从index1到index2的元素。
  • lpop key:从列表的左侧移除并返回第一个元素。
  • rpop key:从列表的右侧移除并返回第一个元素。
  • lindex key index:根据索引获取列表中的元素。
  • llen key:获取列表的长度。
  • lrem key N v1:删除列表中N个值等于v1的元素。
  • rpoplpush key1 key2:从key1列表的右侧移除元素,并将其添加到key2列表的左侧。
  • lset key index value:设置列表中索引为index的元素的值。

4. Redis哈希表(Hash)

Redis哈希表是一个键值对集合,其中键是一个字符串,值可以是一个字符串、整数或列表。

  • hset key feild value:设置哈希表的键值对。
  • hget key feild:获取哈希表中键对应的值。
  • hmset key feild value feild value ...:同时设置哈希表的多个键值对。
  • hmget key feild feild ...:同时获取哈希表的多个键值对。
  • hgetall key:获取哈希表中的所有键值对。
  • hdel key feild:删除哈希表中的键值对。
  • hlen key:获取哈希表中的键值对数量。
  • hexists key feild:检查哈希表中是否存在指定的键。
  • hkeys key:获取哈希表中的所有键。
  • hvals key:获取哈希表中的所有值。
  • hincrby key feild v:将哈希表中键对应的值增加v。
  • hsetnx key feild value:如果键不存在,则设置键的值。

5. Redis集合(Set)

集合(Set)是Redis中的一种数据结构,用于存储唯一的字符串元素。

5.1 常用操作

  • SADD key member [member ...]

    向集合中添加一个或多个成员。如果成员已经存在,则不会重复添加。

    SADD myset a b c
    
  • SMEMBERS key

    获取集合中的所有成员。

    SMEMBERS myset
    
  • SISMEMBER key member

    判断成员是否存在于集合中。

    SISMEMBER myset a
    
  • SREM key member [member ...]

    从集合中移除一个或多个成员。

    SREM myset a
    
  • SCARD key

    获取集合的成员数量。

    SCARD myset
    
  • SRANDMEMBER key [count]

    从集合中随机获取一个或多个成员。如果不指定count,则只返回一个成员。

    SRANDMEMBER myset
    
  • SPOP key [count]

    移除并返回集合中的一个或多个成员。如果不指定count,则只移除一个成员。

    SPOP myset
    
  • SMOVE source destination member [member ...]

    将集合中的一个或多个成员移动到另一个集合中。

    SMOVE myset myset2 a b
    

5.2 集合运算

集合还支持一些高级操作,例如集合运算:

  • SDIFF key [key ...]

    返回一个集合,该集合是第一个集合与所有给定集合的差集。

    SDIFF myset myset2
    
  • SINTER key [key ...]

    返回一个集合,该集合是第一个集合与所有给定集合的交集。

    SINTER myset myset2
    
  • SUNION key [key ...]

    返回一个集合,该集合是第一个集合与所有给定集合的并集。

    SUNION myset myset2
    

6. Redis有序集合(Sorted Set)

有序集合(Sorted Set)是集合的扩展,每个元素都会关联一个分数,可以根据分数来排序集合中的元素。

6.1 常用操作

  • ZADD key score member [score member ...]

    向有序集合中添加一个或多个成员,每个成员都会关联一个分数。

    ZADD myzset 10 apple 20 banana 30 cherry
    
  • ZRANGE key start stop [WITHSCORES]

    按照索引范围获取有序集合中的元素。

    ZRANGE myzset 0 2
    
  • ZREVRANGE key start stop [WITHSCORES]

    按照索引范围获取有序集合中的元素,结果将按照分数从高到低排序。

    ZREVRANGE myzset 0 2
    
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

    根据分数范围获取有序集合中的元素。

    ZRANGEBYSCORE myzset 10 20
    

6.2 高级操作

  • ZCARD key

    获取有序集合的成员数量。

    ZCARD myzset
    
  • ZREM key member [member ...]

    从有序集合中移除一个或多个成员。

    ZREM myzset banana
    
  • ZSCORE key member

    获取有序集合中成员的分数。

    ZSCORE myzset apple
    
  • ZINCRBY key increment member

    对有序集合中指定成员的分数进行增量操作。

    ZINCRBY myzset 5 apple
    

7. Redis位图(BitMap)

Redis的位图(BitMap)是一个特殊的字符串类型,可以用来存储和检查大量布尔值。由于位图只使用单个比特位来表示每个值,因此它非常适合存储大量的小规模数据集。

7.1 位图操作

  • SETBIT key offset value

    在位图中的指定偏移量处设置值为1或0。

    SETBIT user:001:online 0 1  # 表示用户001在线
    
  • GETBIT key offset

    获取位图在指定偏移量处的值(0或1)。

    GETBIT user:001:online 0  # 获取用户001在线状态
    
  • BITCOUNT key [start end]

    计算位图中指定范围内的1的数量。如果不指定start和end,则计算整个位图。

    BITCOUNT user:001:online 0 100  # 计算用户001在线时间段内的活跃用户数
    
  • BITOP operation destkey sourcekey [sourcekey ...]

    对多个位图执行位运算,并将结果存储在目标位图中。支持的运算包括AND、OR、XOR和NOT。

    BITOP AND resultkey key1 key2  # 将key1和key2的位图进行AND运算,结果存储在resultkey
    

8. Redis基数统计(HyperLogLog)

Redis的HyperLogLog是一种概率数据结构,用于计算集合中不同元素的大致基数(即不同元素的个数)。它非常适合存储大量唯一值,且占用的空间非常小。

8.1 HyperLogLog操作

  • PFADD key element [element ...]

    向HyperLogLog中添加一个或多个元素。

    PFADD uniqueVisitors UV1 user1 user2 user3
    
  • PFCOUNT key [key ...]

    返回HyperLogLog中存储的基数估计值。

    PFCOUNT UV1
    
  • PFMERGE destkey sourcekey [sourcekey ...]

    将多个HyperLogLog合并为一个,并计算合并后的基数估计值。

    PFMERGE UV2 UV1 UV3
    

9. Redis地理空间(GEO)

Redis的地理空间(GEO)模块允许你存储和查询地理坐标点,并计算两点之间的距离和获取基于位置的元素范围。

9.1 地理空间操作

  • GEOADD key longitude latitude member [longitude latitude member ...]

    添加一个或多个地理坐标到键中。

    GEOADD locations 116.4074 39.9042 beijing
    
  • GEOPOS key member [member ...]

    获取指定成员的地理坐标。

    GEOPOS locations beijing
    
  • GEORADIUS key longitude latitude radius unit [WITHCOORD [WITHDIST [WITHHASH]]]

    以给定中心点和半径获取所有位于指定范围内的成员。

    GEORADIUS locations 116.4074 39.9042 100 km WITHCOORD
    

10. Redis流(Stream)

Redis的Stream是一个全新的数据结构,用于处理实时消息流,支持消息的发布和订阅,以及高效的持久化。

10.1 流操作

  • XADD key [NX|XX] [ID <id>][len <len>] <field> <value> [field <value> ...]

    添加一个消息到Stream中。

    XADD mystream * field1 value1 field2 value2
    
  • XRANGE key start stop [WITHSCORES]

    获取Stream中从start到stop的消息。

    XRANGE mystream 0 10
    
  • XREAD key [key ...] stream [id [count]]

    从Stream中读取消息。

    XREAD Streams mystream 0
    

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

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

相关文章

Atlas800昇腾服务器(型号:3000)—驱动与固件安装(一)

服务器配置如下&#xff1a; CPU/NPU&#xff1a;鲲鹏 CPU&#xff08;ARM64&#xff09;A300I pro推理卡 系统&#xff1a;Kylin V10 SP1【下载链接】【安装链接】 驱动与固件版本版本&#xff1a; Ascend-hdk-310p-npu-driver_23.0.1_linux-aarch64.run【下载链接】 Ascend-…

Vue3学习:vite项目中图片不能显示,报错 require is not defined

今天做了一个案例“给你喜欢的人送花”&#xff0c;如果喜欢谁&#xff0c;就给谁送花&#xff0c;最多可以送5朵。运行效果如下。 这个项目是使用 npm create vitelatest 命令创建的。 包括2个组件&#xff1a; 根组件App.vue子组件HelloVote.vue。 目录结构如图所示&#x…

秋招面试题记录_半结构化面试

c八股(可能问的多一点) 1.简单说说C11语法特性 答&#xff1a; 1.auto以及decltype自动类型推导&#xff0c;避免手动声明复杂类型&#xff0c;减少冗长代码提升了可读性和安全性。 2.智能指针 自动释放内存 (具体说说) 有shared和unique 差异主要体现在所有权、内存开销、…

Java项目-基于springboot框架的校园在线拍卖系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

Java的walkFileTree方法用法【FileVisitor接口】

在Java旧版本中遍历文件系统只能通过File类通过递归来实现&#xff0c;但是这种方法不仅消耗资源大而且效率低。 NIO.2的Files工具类提供了两个静态工具方法walk()和walkFileTree()可用来高效并优雅地遍历文件系统。walkFileTree()功能更强&#xff0c;可自定义实现更多功能&am…

(二十)、从宿主机访问 k8s(minikube) 发布的 redis 服务

文章目录 1、环境准备2、具体操作2.1、启动 minikube (start/stop)2.2、准备 redis-deployment.yaml2.3、执行 redis-deployment.yaml2.3.1、查看 pod 信息和日志 2.4、检查部署和服务状态2.4.1、如果需要删除 3、查看 IP 的几个命令3.1、查看IP的几个命令3.2、解读3.3、宿主机…

k8s的部署和安装

k8s的部署和安装 一、Kubernets简介及部署方法 1.1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个阶段&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参…

HarmonyOS Next模拟器异常问题及解决方法

1、问题1&#xff1a;Failed to get the device apiVersion. 解决方法&#xff1a;关闭模拟器清除用户数据重启

电子商务网站维护技巧:保持WordPress、主题和插件的更新

在这个快节奏的数字时代&#xff0c;维护一个电子商务网站的首要任务之一是保持WordPress、主题和插件的最新状态。过时的软件不仅可能导致功能故障&#xff0c;还可能带来安全风险。本文将深入探讨如何有效地更新和维护您的WordPress网站&#xff0c;以确保其安全性和性能。 …

【天池比赛】【零基础入门金融风控 Task2赛题理解】【2.3.6】

【天池比赛】【零基础入门金融风控 Task2赛题理解】【2.3.1-2.3.5】 2.3.6 变量分布可视化 2.3.6.1 单一变量分布可视化 对于 pandas.core.series.Series 类型的变量&#xff1a; index&#xff1a;含义&#xff1a;它表示 Series 对象的索引&#xff0c;也就是每个数据点对…

Docker-Consul概述以及集群环境搭建

文章目录 一、Docker consul概述二、consul 部署1.consul服务器2.registrator服务器&#xff08;客户端&#xff09;2.consul-template&#xff08;在consul服务器&#xff09;3.consul 多节点 一、Docker consul概述 容器服务更新与发现&#xff1a;先发现再更新&#xff0c;…

FFmpeg 4.3 音视频-多路H265监控录放C++开发三 :安装QT5.14.2, 并将QT集成 到 VS2019中。

一&#xff0c;安装QT&#xff0c; 重点&#xff1a;在安装QT的时候要安装msvc201x版本的组件&#xff0c; 二 &#xff0c; 安装 qt-vs-tools Index of /development_releases/vsaddin/2.8.1 三&#xff0c;需要安装过 windows10 SDK&#xff0c;一般我们在安装vs2019的时候就…

【MR开发】在Pico设备上接入MRTK3(三)——在Unity中运行MRTK示例

在前面的文档中&#xff0c;介绍了如何在Unity工程中配置号MRTK和Pico SDK 【MR开发】在Pico设备上接入MRTK3&#xff08;一&#xff09;在Unity中导入MRTK3依赖【MR开发】在Pico设备上接入MRTK3&#xff08;二&#xff09;在Unity中配置Pico SDK 本文将介绍如何运行一个简单…

Docker 安装sql server 登陆失败

错误&#xff1a; Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]. Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish co…

【virtuoso】sp测电阻

电路测量原理&#xff1a; 1. 电路原理图 2. 仿真设置 点击select&#xff0c;在原理图选择port设置sp扫频范围 3. plot图像 3.1 plot电阻图像 由公式可得&#xff0c;电阻值为阻抗的实部&#xff0c;所以 1. 选择 ZP 2. 绘制real 3. 点击Z11 4. 即可看到电阻值 3.2 plot电容图…

C++第七讲:STL--list的使用及模拟实现

C第七讲&#xff1a;STL--list的使用及模拟实现 1.list的使用1.1list是什么1.2构造、析构、赋值运算符重载1.3迭代器1.4empty、size、max_size1.5front、back1.6assign -- 代替1.7push_back和emplace_back1.8emplace1.9insert、erase、swap、resize、clear1.10find1.11splice1.…

CSDN Markdown 编辑器语法大全

Markdown 是一种轻量级标记语言&#xff0c;它以简洁、易读易写的特点&#xff0c;被广泛应用于技术文档、博客文章、笔记等领域。CSDN 的 Markdown 编辑器为用户提供了丰富的功能&#xff0c;让用户能够轻松地创建格式规范、内容丰富的文档。以下是一份详细的 CSDN Markdown 编…

大数据治理--法规遵从与隐私保护

目录 ​编辑一、国际及地方数据保护法规 1.1 国际数据保护法规 1.1.1 欧盟《通用数据保护条例》&#xff08;GDPR&#xff09; 1.1.2 美国《加州消费者隐私法案》&#xff08;CCPA&#xff09; 1.1.3 中国《网络安全法》及《个人信息保护法》 1.2 地方数据保护法规 二、…

深入解析缓存技术

文章目录 1. 缓存基本原理2. 缓存更新机制2.1 Cache Aside模式2.2 Read/Write Through2.3 Write Behind Caching2.4 对比总结 3. 缓存数据过期策略3.1 最近最少使用&#xff08;Least Recently Used, LRU&#xff09;算法3.2 先进先出&#xff08;First-In-First-Out, FIFO&…

OpenCV高级图形用户界面(10)创建一个新的窗口函数namedWindow()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 创建一个窗口。 函数 namedWindow 创建一个可以作为图像和跟踪条占位符的窗口。创建的窗口通过它们的名字来引用。 如果已经存在同名的窗口&am…