Redis数据类型

Redis数据类型

文章目录

    • Redis数据类型
        • 0.基本命令
          • (1)key操作命令
          • (2)注意
        • 1.字符串(String)
          • (1)set key value
          • (2)mset /mget
          • (3)getrange/setrange
          • (4)数值增减
          • (5)strlen/append
          • (6)getset:先get再set
        • 2.列表(List)
          • (0)简介
          • (1)lpush/rpush
          • (2)lindex/lrange/llen
          • (3)lpop/rpop
          • (4)lrem/ltrim
          • (5)rpoplpush
          • (6)lset/linsert
        • 3.哈希(Hash)
          • (0)简介
          • (1)hset/hget/hmget/hlen
          • (2)hgetall/hdel
          • (3)hexists key field
          • (4)hkeys/hvals
          • (5)hincrby/hincrbyfloat
          • (6)hsetnx
        • 4.集合(set)
          • (0)简介
          • (1)sadd/srem
          • (2)smembers/srandmember/scard
          • (3)sismemsber/spop
          • (4)smove
          • (5)集合运算
        • 5.有序集合(sorted set)
          • (0)简介
          • (1)zadd/zrem
          • (2)zcard/zscore/zcout
          • (3)zrange/zrevrange
          • (4)zrangebyscore
          • (5)zincrby
          • (6)zrank/zrevrank
        • 6.位图(bitmap)
          • (0)简介
          • (1)setbit
          • (2)getbit
          • (3)strlen/bitcount
          • (4)bitop
        • 7.基数统计(hyperloglog)
          • (0)简介
          • (1)pfadd
          • (2)pfcount/pfmerge
        • 8.地理空间(GEO)
          • (0)简介
          • (1)geoadd/geopos/geohash
          • (2)geodist/georadius/georadiusbymember
        • 9.流(stream)
          • (0)简介
          • (1)队列相关指令
          • (2)消费组相关指令
        • 10.位域(bitfield)
          • (0)简介

0.基本命令
(1)key操作命令
  • keys *:查看当前库所有的key,类似于select*。

  • exists key:判断某个key是否存在,存在返回1,不存在返回0。

    exists k1 k2 k3
    //若有一个不存在则返回2,以此类推
    
  • type key:查看key是什么类型。

  • del key:删除指定的key数据。

  • unlink key:非阻塞删除,真正的删除在异步中操作

  • ttl key:查看还有多长时间(秒)过期,返回-1代表永不过期,返回-2代表已经过期。

  • expire key [second]:为给定的key设置过期时间。

  • move key dbindex [0-15]:将当前数据库的key移动端给定的数据库中。

    redis有16个数据库,默认使用0号数据库。

  • select [0-15]:选择某个数据库。

  • dbsize:查看当前数据库的key数量,类似于select count(*)

  • flushdb:清空当前库。

  • flushall:通杀全部库。

  • move key db:将当前数据库的数据移动到给定数据库。

(2)注意
  • 命令不区分大小写,但是key是区分大小写的。
  • 帮助命令kelp @xxx
1.字符串(String)
(1)set key value
  • 官网给出此命令有多个可选参数。

    SET key value [NX | XX] [GET] [EX seconds | PX milliseconds |EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL]
    
    • EX [second] – 设置指定的过期时间(以秒为单位)。
    • PX [millisecond] – 设置指定的过期时间(以毫秒为单位)。
    • EXAT [second] – 设置键过期的指定 Unix 时间(以秒为单位)。
    • PXAT [millisecond] – 设置键过期的指定 Unix 时间(以毫秒为单位)。
    • NX– 键不存在时才设置密钥。
    • XX– 仅当键已存在时才设置密钥(覆盖原值)。
    • KEEPTTL– 保留与键关联的生存时间。
    • GET– 返回指定键原本的值,若键不存在返回``nil`
(2)mset /mget
  • mset [k v]...用于同时创建多个键值对。

    mset k1 v1 k2 v2 k3 v3
    
  • mget [k]...用于查看多个键的值。

    mget k1 k2 k3
    
  • set一样,mset也可以选择使用上述参数,但是会当成一个整体,不存在部分操作成功。

(3)getrange/setrange
  • 此两种命令用来获取或设定区间范围的值。

  • getrange key [st ed]:或许索引下标之间的字符串(索引从0开始)。

  • setrange key [st str]:设置从下标st开始的一段值为str。

    set k1 123456 #1234abcd
    getrange k1 0 4 #1234a
    setrange k1 2 xxyy #12xxyycd
    
(4)数值增减
  • 一定要是数字才可以进行增减。
  • incr/decr:递增/递减数字。
  • incrby/decrby key cnt:增加(减少)指定的值。
(5)strlen/append
  • strlen key:获取字符串的长度。
  • append key str:在原来的基础上追加内容。
(6)getset:先get再set
2.列表(List)
(0)简介
  • 是一个双端链表的结构,特点为单key多value。
  • 两端都可以执行插入或者添加操作。
  • 主要功能有push/pop等,一般用在栈、队列、消息队列等场景。
(1)lpush/rpush
  • lpush key [v1 v2...]:在列表头部插入一个或者多个值。
  • rpush key [v1 v2...]:在列表尾部插入一个或多个值。
(2)lindex/lrange/llen
  • lindex key cnt:获取指定索引下标的元素。
  • lrange key [st ed]:获取指定范围内的元素。
  • llen key:获取列表中元素的个数。
(3)lpop/rpop
  • lpop key:移除并获取列表的第一个元素。
  • rpop key:移除并获取列表的最后一个元素。
(4)lrem/ltrim
  • lrem key cnt v1:删除cnt个值为v1的元素。
  • ltrim key [st ed]:截取指定范围内的元素并覆盖原值。
(5)rpoplpush
  • 弹出第一个key的最后一个元素,插入到第二个key的队头。
  • rpoplpush k1 k2
(6)lset/linsert
  • lset key index val:通过索引设置列表元素值。
  • linsert key before/after have new:在某值之前或之后插入新值。
3.哈希(Hash)
(0)简介
  • string 类型的 field(字段) 和 value(值) 的映射表。
  • k-v的模式不变,但是v是键值对的集合。
  • 可以理解为map<string, map<object, onject>>
(1)hset/hget/hmget/hlen
  • hset key [f1 v1] [f2 v2]...:将哈希表中的field字段设值为value。
  • hget key field:获取字段映射的值。
  • hmget key f1 f2...:获取多个字段映射的值。
  • hlen key:获取全部字段的数量。
(2)hgetall/hdel
  • hgetall key:获取哈希表中所有的字段和值。
  • hsel key f1 f2...:删除一个或多个哈希表字段。
(3)hexists key field
  • 查询哈希表中指定的字段是否存在。
  • 存在返回数量,不存在返回0。
(4)hkeys/hvals
  • hkeys key:获取哈希表中的所有字段。
  • hvals key:获取哈希表中所有的值。
(5)hincrby/hincrbyfloat
  • hincrby key field add:为指定字段的整数值加上增量。
  • hincrbyfloat:为指定字段的浮点数值加上增量。
(6)hsetnx
  • 为哈希表中不存在的的字段赋值 。
  • hsetnx f1 v1(不可同时赋值多个)
4.集合(set)
(0)简介
  • 集合是String的无序集合,集合成员是唯一的。
  • 数据的存储数据随机。
  • 通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
(1)sadd/srem
  • sadd key [m1 m2...]:添加一个或多个元素。
  • srem key [m1 m2...]:删除一个或多个元素。
(2)smembers/srandmember/scard
  • smembers key:返回集合中到的所有成员。
  • srandmembser key [cnt]:返回集合中指定个随机值。
  • scard:获取成员的集合数。
(3)sismemsber/spop
  • sismemser key member:判断元素是否存在。
  • spop key:移除并返回集合中的一个元素。
(4)smove
  • smove k1 k2 val
  • 将元素从一个集合移动到另一个集合。
(5)集合运算
  • sdiff差集运算

    • sdiff key k1 [k2...]

    • 属于key但不属于k1 k2 …的元素构成的集合(新集合)。

  • sunion并集运算

    • sunion key k1 [k2...]
    • 属于key或者属于k1 k2 …的元素构成的集合(新集合)。
  • sinter交集运算

    • sinter key k1 [k2...]
    • 属于key同时也属于k1 k2 …的元素构成的集合(新集合)。
5.有序集合(sorted set)
(0)简介
  • 与set不同的是每个元素都会关联一个 double 类型的分数。
  • 通过分数来为集合中的成员进行从小到大的排序。
  • 有序集合的成员是唯一的,但分数是却可以重复的。
(1)zadd/zrem
  • zadd key s1 m1 [s2 m2]:添加一个或多个元素。
  • zrem key score m1 [m2...]:删除某分数下对应的值。
(2)zcard/zscore/zcout
  • zcard key:获取有序集合的成员数。
  • zscore key member:返回有序集合中成员的分数值。
  • zcount key min max:返回指定区间分数的成员数(包含区间)。
(3)zrange/zrevrange
  • zrange key st ed:返回索引区间内的成员。
  • zrevrange key st ed:返回索引区间内的成员,分数由高到低。
(4)zrangebyscore
  • zrangebyscore key min max [withsocres][limit]
  • 通过分数返回有序集合指定区间内的成员。
(5)zincrby
  • key increment member

  • 对有序集合中指定成员的分数加上增量 。

(6)zrank/zrevrank
  • zrank key member:返回有序集合中指定成员的索引(获取下标值)。
  • zrevrank:回有序集合中指定成员的索引,并按分数从小到大排列。
6.位图(bitmap)
(0)简介
  • 用String类型作为底层数据结构实现的一种统计二值状态的数据类型。

  • 由多个二进制位组成,每个二进制位都对应一个偏移量。

  • 位图本质是数组,每一位用来判断是否二值。

在这里插入图片描述

  • 适合一些数据量大且使用二值统计的场景。
(1)setbit
  • 命令格式:setbit key offset value
  • 针对key存储的字符串值,设置或清除指定偏移量(索引)offset上的值value。
  • 设置值为1,清除值为0。
  • 当key不存在时,会创建一个新的字符串。
(2)getbit
  • 命令格式:getbit key offset
  • 返回指定索引位置的值。
(3)strlen/bitcount
  • strlen key:统计字节数占用多少(8位一字节)。
  • bitcount key [st ed]:全部(范围)键里含有多少个1。
(4)bitop
  • 位运算操作命令。
  • botop operation key k1 [k2 ...]
  • operation可以为and/or/xor/not
7.基数统计(hyperloglog)
(0)简介
  • 去重复统计功能的技术估计算法。
  • 基数是一种数据集,去重复的真实个数。
  • 不会存储输入元素本身
(1)pfadd
  • pfadd key e1 [e2 e3...]
  • 添加指定元素。
(2)pfcount/pfmerge
  • pfcount key [k1 k2...]:返回给定的hyperloglog的基数估计值。
  • pfmerge key k1 [k2 k3...]:将多个合并。
8.地理空间(GEO)
(0)简介
  • 主要用于存储地理位置信息,并对存储的信息进行操作。
  • 将经度与纬度以一种二级制编码的方式存储起来。
(1)geoadd/geopos/geohash
  • geoadd key 经度 纬度 位置名称 [a b c]..:添加一个或多个位置信息。
  • geopos key 位置名称 [m1 m2....]:返回所有指定位置的位置信息。
  • geohash
(2)geodist/georadius/georadiusbymember
  • geodist key m1 m2 [m|km|ft|mi]:返回两个给定位置之间的距离。
  • georadius key 经度 纬度 radius m|km|ft|mi:以某经纬为中心,查找半径范围内的XXX。
  • georadiusbymember key member radius m|km|ft|mi:以某位置为中心,查找半径范围内的XXX。
9.流(stream)
(0)简介
  • 相当于Redis版的消息中间件(阻塞队列),MQ。

  • 实现消息队列,支持消息的持久化,支持消费者模式等。

  • 让消息队列更加的稳定可靠。

  • 自成一派,为stream类型。

  • id结构:<毫秒时间戳> - <递增序列号>

(1)队列相关指令
  • xadd key id field value [f1 v1 f2 v2 ...]

    • 向队列中添加消息(创建队列)。
    • id :消息 id,我们使用 * 表示由 redis 生成,可以自定义,但是要自己保证递增性。
  • xrange key st ed [count cnt]

    • 获取指定区间内(指定数量)的消息列表。
    • st为-时表示最小值,ed为+时,表示最大值。
    • xrevrange key ed st...:降序输出。
  • xdel key id [id ...]

    • 删除选定的消息。
    • 可同时删除多个。
  • xtrim对流进行截取,限制长度。

    • xtrim key maxlen count:修建为最新的指定数目个项目。
    • xtrim key minid id:低于所指定id的所有条目都将被逐出。
    • xtrim key maxlen ~ count~ 参数意味着用户并没有真正请求流长度正好为cnt个项目,而是可以多几十个条目,但永远不会少于cnt个项目。
  • xread [COUNT cnt] [BLOCK ms] streams key [key ...] id [id ...]

    • 以阻塞或非阻塞方式获取消息列表。
    • 未设置阻塞秒数即为非阻塞模式。
    • 获取一个或多个key的从id开始cnt条消息(大于id的消息)。
    • $代表特殊ID,表示以当前Stream已经存储的最大的ID作为最后一个ID,当前Stream中不存在大于当前最大ID的消息,因此此时返回nil。
    • 0-0代表从最小的ID开始获取Stream中的消息,当不指定count,将会返回Stream中的所有消息,注意也可以使用0(00/000也都是可以的……)

    在这里插入图片描述

(2)消费组相关指令
  • xgroup create
    • 用于创建消费者组。
    • xgroup create key groupname 0:从头部开始消费(依次向后消费)。
    • xgroup create key groupname $:从尾部开始消费(消费新来的信息)。
  • xreadgroup group
    • xreadgroup groupname consumer streams key
    • 同一个消费者组里的消费者不能消费同一条信息。
    • ">"表示从第一条尚未被消费的消息开始读取
  • xpending
    • 查询每个消费组内所有消费者[已读取、但尚未确认]的消息。
    • 查看某个消费者具体读取了哪些数据。
  • xack
    • 向消息队列确认消息处理已完成。
10.位域(bitfield)
(0)简介
  • 将一个Redis字符串看作是一个由二进制位组成的数组。
  • 并能对变长位宽和任意没有字节对齐的指定整型位域进行寻址和修改。
  • 主要功能为位域修改和溢出控制。

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

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

相关文章

I/O模型之非阻塞IO

简介 五种IO模型   阻塞IO   非阻塞IO   信号驱动IO   IO多路转接    异步IO 代码书写 非阻塞IO 再次理解IO 什么是IO&#xff1f;什么是高效的IO&#xff1f; 为了理解后面的一个问题&#xff0c;我们首先要再重新理解一下什么是IO 在之前的网络介绍中&#xff…

C算法:输入一个数n,输出1到n之间所有的质数

需求&#xff1a; 写一个函数&#xff0c;输入一个数n&#xff0c;输出1到n之间所有的质数。&#xff08;注&#xff1a;质数又称素数。一个大于1的自然数&#xff0c;除了1和它自身外&#xff0c;不能被其他自然数整除的数叫做质数。&#xff09; 输入样例&#xff1a; 10 …

又是一年1024程序员日

程序员节是每年的10月24日&#xff0c;这是一个特殊的节日&#xff0c;旨在庆祝和表彰程序员们对科技和社会的贡献。作为技术领域的从业者&#xff0c;程序员们在现代社会中扮演着重要的角色&#xff0c;他们致力于编写、测试和维护软件代码&#xff0c;为我们的生活带来了无数…

【原创】解决Kotlin无法使用@Slf4j注解的问题

前言 主要还是辟谣之前的网上的用法&#xff0c;当然也会给出最终的使用方法。这可是Kotlin&#xff0c;关Slf4j何事&#xff01;&#xff1f; 辟谣内容&#xff1a;创建注解来解决这个问题 例如&#xff1a; Target(AnnotationTarget.CLASS) Retention(AnnotationRetentio…

【Excel】WPS单元格快速转换表格字母大小写

使用WPS Office打开表格&#xff0c;选择需要处理的单元格或单元格区域。 依次点击「会员专享」选项卡 —>「智能工具箱」。 再点击「格式」—>「大小写」&#xff0c;选择一种大小写转换方式即可。

Hadoop3教程(三十):(生产调优篇)纠删码

文章目录 &#xff08;155&#xff09;纠删码原理纠删码原理纠删码相关命令纠删码策略解释 &#xff08;156&#xff09;纠删码案例实操参考文献 &#xff08;155&#xff09;纠删码原理 纠删码原理 默认情况下&#xff0c;一个文件在HDFS里会保留3个副本&#xff0c;以此提高…

uniapp map polygons 区域填充色(fillColor)在ios显示正常,但在安卓手机显示是黑色的,怎么解决?

uniapp map polygons 区域填充色&#xff08;fillColor&#xff09;在ios显示正常&#xff0c;但在安卓手机显示是黑色的,怎么解决&#xff1f; <MapPage :longitude"item.centerCoord[0]" :latitude"item.centerCoord[1]":polygons"[{ points: it…

Qt作业九

1、思维导图 2、作业 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> #include <QTime> #include <QTimerEvent> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAME…

JAVA入门总结回顾

1.常用的DOS命令&#xff1a;DOS窗口常用命令-CSDN博客 2.检查jdk是否安装成功&#xff1a;在cmd中输入java -version或者java或者javac。出现相应的对应显示内容。 3.JDK&#xff0c;JRE之间的关系&#xff1a;JDK是JAVA的开发工具包&#xff0c;JRE是JAVA的的运行环境。JRE…

09 创建型模式-建造者模式

1.建造者模式介绍&#xff1a; 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式 定义: 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不 同的表示。 2.建造者模式要解决的问题 建造者模式可以将部件和其组装过程分开&am…

【广州华锐互动】VR营销心理学情景模拟培训系统介绍

在高度竞争的汽车市场中&#xff0c;销售人员需要具备强大的专业知识、引人入胜的销售技巧&#xff0c;以及敏锐的市场洞察力。然而&#xff0c;传统的培训方式往往无法满足这些需求&#xff0c;因为它们往往忽略了实践的重要性。 为了解决这个问题&#xff0c;许多公司开始采用…

vsCode 格式化配置

学习目标&#xff1a; 基于 vsCode 配置格式化工具&#xff0c;提高&#xff08;React、Vue &#xff09;开发效率  1. vsCode 安装 prettier 插件并启用  2. 修改配置文件 setting.json setting.json 位置&#xff1a; 依次点击 替换内容&#xff1a;↓ {"git.enab…

Fwupd 1.9.6 Linux 固件升级工具已于近日发布

导读Fwupd 1.9.6 Linux 固件升级工具已于近日发布&#xff0c;支持更多硬件设备、新功能和十几处错误修复。 Fwupd 1.9.6 是在 fwupd 1.9.5 发布一个月后推出的&#xff0c;它引入了对更多硬件设备的支持&#xff0c;包括 AMD dGPUs Navi3x 及更高版本、Star Labs StarBook Mk …

nrf52832 PWM配置

PWM使用时sdk_config.h文件中配置如下:#define PWM_ENABLED 1 #define PWM0_ENABLED 1 #define NRFX_PWM_ENABLED 1 #define NRFX_PWM0_ENABLED 0sdk_config.h 文件中添加下列配置 // <e> NRFX_PWM_ENABLED - nrfx_pwm - PWM peripheral driver // #ifndef NRFX_PWM_ENA…

深度学习_4_实战_直线最优解

梯度 实战 代码&#xff1a; # %matplotlib inline import random import torch import matplotlib.pyplot as plt # from d21 import torch as d21def synthetic_data(w, b, num_examples):"""生成 Y XW b 噪声。"""X torch.normal(0,…

【LeetCode刷题-数组】--27.移除元素

27.移除元素 class Solution {public int removeElement(int[] nums, int val) {int slow 0,fast 0,n nums.length;while(fast < n){if(nums[fast] ! val){nums[slow] nums[fast];slow;}fast;}return slow;} }

又是一年1024,你还在做程序猿嘛

每年的10月24日&#xff0c;对于广大程序员来说&#xff0c;都有着特殊的意义。这一天是程序员节&#xff0c;一个属于这个独特群体的庆祝活动。在这个特别的日子里&#xff0c;我们不禁要问&#xff1a;又是一年1024&#xff0c;你还在做程序猿嘛&#xff1f; 程序员&#xff…

【大数据】Kafka 实战教程(二)

Kafka 实战教程&#xff08;二&#xff09; 1.下载2.安装3.配置4.运行4.1 启动 Zookeeper4.2 启动 Kafka 5.第一个消息5.1 创建一个 Topic5.2 创建一个消息消费者5.3 创建一个消息生产者 1.下载 你可以在 Kafka 官网&#xff1a;http://kafka.apache.org/downloads&#xff0c…

腾讯云双11优惠活动:这价格可能引起一波退款潮

2023腾讯云双十一优惠活动上线了&#xff0c;轻量应用服务器这价格可能会引起一波退款热潮&#xff0c;2核2G3M、2核2G4M和2核4G5M的轻量应用服务器均降价了&#xff0c;而且降幅比较大&#xff0c;对于刚刚买完的用户&#xff0c;很可能会申请退款重新购买。 2023腾讯云双11优…

N——>BatchSize 数据维度理解和处理(chun, cat, squeeze, unsqueeze)

数据处理之N——>BatchSize N——>batch_size train_data TensorDataset(torch.Tensor(x_train).double(), torch.Tensor(y_train).double()) train_loader DataLoader(train_data, batch_sizeargs.bs, shuffleTrue, drop_lastTrue) for batch_idx, (inputs, results…