Redis命令实战:使用场景记录

本文深入探讨了Redis中五种主要数据类型的特性和应用场景,包括String、List、Set、ZSet和HyperLogLog,以及如何利用这些类型执行高效的数据管理和操作。从简单的计数到复杂的集合运算,再到高效的排序和地理空间查询,Redis提供了丰富的命令集来满足各种需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String类型

计数器类

INCR key

相当于 i++

将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。

INCRBY key increment

相当于 i += increment 

将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。

INCRBYFLOAT key increment

为 key 中所储存的值加上浮点数增量 increment 

DECR key

将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。

DECRBY key decrement

将 key 所储存的值减去减量 decrement 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。

List类型

栈、队列、阻塞队列

RPUSH key value [value ...]

将一个或多个值 value 插入到列表 key 的表尾(最右边)。

RPOP key

移除并返回列表 key 的尾元素。

LPUSH key value [value ...]

将一个或多个值 value 插入到列表 key 的表头

LPOP key

移除并返回列表 key 的头元素。

Set类型

抽奖、集合交并差(共同关注、共同好友)

SRANDMEMBER key [count]

如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。可选的 count 参数。

SPOP key

移除并返回集合中的一个随机元素。

SDIFF key [key ...]

返回一个集合的全部成员,该集合是所有给定集合之间的差集。

A={1,bai2,3,4,5}  B={1,2,3,10}
差集:B-A={10},即把B中属于A的元素去掉。

SINTER key [key ...]

返回一个集合的全部成员,该集合是所有给定集合的交集。

SUNION key [key ...]

返回一个集合的全部成员,该集合是所有给定集合的并集。

ZSet类型

排序

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。

有序集成员按 score 值递增(从小到大)次序排列。

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。

有序集成员按 score 值递减(从大到小)的次序排列。

ZRANGE key start stop [WITHSCORES]

返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序。

ZREVRANGE key start stop [WITHSCORES]

返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。

二者的区别:一个是“索引”,一个是“score”

range 后面跟的是2个索引下标,可以实现 mysql中limit的功能

rangebyscore后面跟的是范围,只要符合都查出来,类似mysql中的 between...and...

geospatial 地理空间

底层是用zset实现的,geospatial本身并没有提供删除的API,可以通过zset的API来操作geospatial的key

HyperLogLog

基数统计。

对唯一项目进行计数需要使用与要计数的项目数量成比例的内存量,因为您需要记住过去已经看到的元素,以避免多次对其进行计数。

但是,有一组算法会以内存换取精度:在Redis实现的情况下,您得出的带有标准误差的估计度量最终会小于1%。

该算法的神奇之处在于,您不再需要使用与所计数项目数成正比的内存量,而是可以使用恒定数量的内存!最坏情况下为12k字节。

可用于统计网页的UV

UV( unique visitor,网站独立访客)

通过互联网访问、流量网站的自然人。1天内相同访客多次访问网站,只计算为1个独立访客。

该概念的引入,是从用户个体的角度对访问数据进行划分。

bitmaps

位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作。

由于字符串是二进制安全Blob,并且最大长度为512 MB,因此它们适合设置多达2 ^ 32个不同的位。

位操作分为两类:固定时间的单个位操作(如将一个位设置为1或0或获取其值),以及对位组的操作,例如,计算给定位范围内设置位的数量(例如,人口计数)。

位图的最大优点之一是,它们在存储信息时通常可以节省大量空间。例如,在以增量用户ID表示不同用户的系统中,仅使用512 MB内存就可以记住40亿用户的单个信息(例如,知道用户是否要接收新闻通讯)。

可实现分布式的布隆过滤器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值