Redis 常用数据类型常用命令和应用场景

首先先混个眼熟 Redis 中的 8 种常用数据类型:

  • 5 种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。

  • 3 种特殊数据类型:HyperLogLog(基数统计)、Bitmap (位图)、Geospatial (地理位置)。

Redis 中5 种基本数据类型

Redis 共有 5 种基本数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。

String

String 是 Redis 中最简单同时也是最常用的一个数据类型。

String 是一种二进制安全的数据类型,可以用来存储任何类型的数据比如字符串、整数、浮点数、图片(图片的 base64 编码或者解码或者图片的路径)、序列化后的对象,常用命令如下

命令 介绍
SET key value 设置指定 key 的值
SETNX key value 只有在 key 不存在时设置 key 的值
GET key 获取指定 key 的值
MSET key1 value1 key2 value2 ...... 设置一个或多个指定 key 的值
MGET key1 key2 ... 获取一个或多个指定 key 的值
STRLEN key 返回 key 所储存的字符串值的长度
INCR key 将 key 中储存的数字值增一
DECR key 将 key 中储存的数字值减一
EXISTS key 判断指定 key 是否存在
DEL key(通用) 删除指定的 key
EXPIRE key seconds(通用) 给指定 key 设置过期时间

List

List 其实就是链表数据结构的实现。我在 线性数据结构 :数组、链表、栈、队列[3] 这篇文章中详细介绍了链表这种数据结构。常用命令如下

命令 介绍
RPUSH key value1 value2 ... 在指定列表的尾部(右边)添加一个或多个元素
LPUSH key value1 value2 ... 在指定列表的头部(左边)添加一个或多个元素
LSET key index value 将指定列表索引 index 位置的值设置为 value
LPOP key 移除并获取指定列表的第一个元素(最左边)
RPOP key 移除并获取指定列表的最后一个元素(最右边)
LLEN key 获取列表元素数量
LRANGE key start end 获取列表 start 和 end 之间 的元素

Set

Hash 是一个 String 类型的 field-value(键值对) 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接修改这个对象中的某些字段的值。常用命令如下

命令 介绍
HSET key field value 设置指定哈希表中指定字段的值
HSETNX key field value 只有指定字段不存在时设置指定字段的值
HMSET key field1 value1 field2 value2 ... 同时将一个或多个 field-value (域-值)对设置到指定哈希表中
HGET key field 获取指定哈希表中指定字段的值
HMGET key field1 field2 ... 获取指定哈希表中一个或者多个指定字段的值
HGETALL key 获取指定哈希表中所有的键值对
HEXISTS key field 查看指定哈希表中指定的字段是否存在
HDEL key field1 field2 ... 删除一个或多个哈希表字段
HLEN key 获取指定哈希表中字段的数量
HINCRBY key field increment 对指定哈希中的指定字段做运算操作(正数为加,负数为减)

Hash

Hash 类型是一种无序集合,集合中的元素没有先后顺序但都唯一,有点类似于 Java 中的 。常用命令如下

|---------------------------------------|-----------------------------|
| SADD key member1 member2 ... | 向指定集合添加一个或多个元素 |
| SMEMBERS key | 获取指定集合中的所有元素 |
| SCARD key | 获取指定集合的元素数量 |
| SISMEMBER key member | 判断指定元素是否在指定集合中 |
| SINTER key1 key2 ... | 获取给定所有集合的交集 |
| SINTERSTORE destination key1 key2 ... | 将给定所有集合的交集存储在 destination 中 |
| SUNION key1 key2 ... | 获取给定所有集合的并集 |
| SUNIONSTORE destination key1 key2 ... | 将给定所有集合的并集存储在 destination 中 |
| SDIFF key1 key2 ... | 获取给定所有集合的差集 |
| SDIFFSTORE destination key1 key2 ... | 将给定所有集合的差集存储在 destination 中 |
| SPOP key count | 随机移除并获取指定集合中一个或多个元素 |
| SRANDMEMBER key count | 随机获取指定集合中指定数量的元素 |

Zset

Zset 类似于 Set,但和 Set 相比,Sorted Set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,还可以通过 score 的范围来获取元素的列表

命令 介绍
ZADD key score1 member1 score2 member2 ... 向指定有序集合添加一个或多个元素
ZCARD KEY 获取指定有序集合的元素数量
ZSCORE key member 获取指定有序集合中指定元素的 score 值
ZINTERSTORE destination numkeys key1 key2 ... 将给定所有有序集合的交集存储在 destination 中,对相同元素对应的 score 值进行 SUM 聚合操作,numkeys 为集合数量
ZUNIONSTORE destination numkeys key1 key2 ... 求并集,其它和 ZINTERSTORE 类似
ZDIFFSTORE destination numkeys key1 key2 ... 求差集,其它和 ZINTERSTORE 类似
ZRANGE key start end 获取指定有序集合 start 和 end 之间的元素(score 从低到高)
ZREVRANGE key start end 获取指定有序集合 start 和 end 之间的元素(score 从高到底)
ZREVRANK key member 获取指定有序集合中指定元素的排名(score 从大到小排序)

Redis中 3 种特殊的数据类型

Bitmap 存储的是连续的二进制数字(0 和 1),通过 Bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,key 就是对应元素本身 。我们知道 8 个 bit 可以组成一个 byte,所以 Bitmap 本身会极大的节省储存空间。常用命令

命令 介绍
SETBIT key offset value 设置指定 offset 位置的值
GETBIT key offset 获取指定 offset 位置的值
BITCOUNT key start end 获取 start 和 end 之前值为 1 的元素个数
BITOP operation destkey key1 key2 ... 对一个或多个 Bitmap 进行运算,可用运算符有 AND, OR, XOR 以及 NOT

HyperLogLog算法本质上是一种哈希算法,它的基本思想是将大量的输入数据映射到较小的数据集中,使得可以快速和精确地计算出这些数据集中不同元素或事件的数量。HyperLogLog算法使用的空间很小,通常只需要几千个字节就可以估算几十亿个元素的数量。它具有良好的空间效率,同时可以提供很高的统计准确性。常用命令

命令 介绍
PFADD key element1 element2 ... 添加一个或多个元素到 HyperLogLog 中
PFCOUNT key1 key2 获取一个或者多个 HyperLogLog 的唯一计数。
PFMERGE destkey sourcekey1 sourcekey2 ... 将多个 HyperLogLog 合并到 destkey 中,destkey 会结合多个源,算出对应的唯一计数。

Geospatial index(地理空间索引,简称 GEO) 主要用于存储地理位置信息,基于 Sorted Set 实现。常用命令

命令 介绍
GEOADD key longitude1 latitude1 member1 ... 添加一个或多个元素对应的经纬度信息到 GEO 中
GEOPOS key member1 member2 ... 返回给定元素的经纬度信息
GEODIST key member1 member2 M/KM/FT/MI 返回两个给定元素之间的距离
GEORADIUS key longitude latitude radius distance 获取指定位置附近 distance 范围内的其他元素,支持 ASC(由近到远)、DESC(由远到近)、Count(数量) 等参数
GEORADIUSBYMEMBER key member radius distance 类似于 GEORADIUS 命令,只是参照的中心点是 GEO 中的元素
相关推荐
follycat20 分钟前
ISCTF2024
java·网络·数据库·学习·网络安全·python3.11
baozhengw1 小时前
IntelliJ+SpringBoot项目实战(七)--在SpringBoot中整合Redis
java·spring boot·redis
星星不说话011 小时前
Redis的Zset在排行榜中应用
数据库·redis·缓存
好奇的菜鸟1 小时前
缓存淘汰策略及其使用场景详解
缓存
Elastic 中国社区官方博客1 小时前
Elasticsearch:管理和排除 Elasticsearch 内存故障
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
北漂编程小王子1 小时前
spring boot 集成 redis 实现缓存的完整的例子
redis·spring·缓存·redis缓存·spring redis缓存
wh_xia_jun2 小时前
minio数据迁移
数据库
liuxin334455662 小时前
药典新篇:Spring Boot助力中药实验管理
数据库·spring boot·php
老码沉思录2 小时前
React Native 全栈开发实战班 - 网络与数据之数据缓存策略SWR、Query
网络·react native·缓存
WuMingf_2 小时前
Mongodb
数据库·mongodb