Redis 数据类型及其常用命令二(bitmap、geo、hyperloglog、bitfield、stream)

本文主要是介绍Redis 数据类型及其常用命令二(bitmap、geo、hyperloglog、bitfield、stream),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        上文中我们介绍了Redis常使用的5中数据类型,对于一些特殊的场景,我们需要使用特殊的数据类型,本文将详细介绍5种特殊的数据类型。

1、bitmap 类型

        用String类型作为底层数据结构实现的一种统计二值状态的数据类型。位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量( 我们称之为一个索引)。Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512 M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)。

# 1、设置值
setbit key offset value # value 只能是 0 或 1
# 2、获取值
getbit key offset
# 3、统计占用bit数,不是字符串长度,超过8位后自己按照8位一组一byte再扩容
strlen key
# 4、统计全部键中1的个数
bitcount key
# 5、位运算(and、or ...)
bitop AND|OR|XOR|NOT destkey key [key ...]
2、HyperLoglog 类型

        在Redis里面,每个HyperLoglog键只需花费12KB内存,就可以计算2^64个不同元素的基数。该数据类型可以去除重复统计的基数估算方法(一种数据集,去除重复元素后真实个数)。

# 1、添加元素
pfadd key v1 v2 v3 ...
# 2、返回HyperLoglog的基数估算值
pfcount key1 key2 ...
# 3、将多个HyperLoglog合并成一个
pfmerge destkey key1 key2 key3 ...
3、 geo 地理空间

        地球上的地理位置是使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],只要我们确定一个点的经纬度就可以名取得他在地球的位置

# 1、存储指定的地理空间
GEOADD key 经度 纬度 地名 经度1 纬度1 地名1 ...
# GEOADD city 116.403963 39.915119 "天安门" 116.403414 39.924091 "故宫" 116.024067 40.362639 "长城"
# 2、返回指定的地名的经纬度
GEOPOS key 地名1 地名2 ...
# 3、返回地理位置的hash值
geohash key 地名1 地名2 ...
# 4、返回两个位置之间的距离
geodist key 地名1 地名2 [M|KM|FT|MI]  # 米|千米|英尺|英里
# 5、以给定的经纬度为中心, 距离不超过给定最大距离的所有位置元素
georadius key 经度 纬度 距离 km withdist withcoord count 10 withhash desc
# WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
# WITHCOORD: 将位置元素的经度和维度也一并返回。
# WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大
# COUNT 限定返回的记录数。
4、 bitfield 类型

        这个里类型不常用,简单了解即可。bitfield是将一个Redis字符串看作一个二进制数组,并能对变长位宽和任意没有字节对齐的指定整型域进行寻址和修改。

BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]
5、Steam 类型

        Stream 类型是Redis5.0版本新增的数据结构,实现消息队列,支持消息持久化、支持自动生成全局唯一ID,支持ack确认消息模式,支持消费者组模式等,就是Redis实现MQ。一般消息队列使用其他中间件实现,如果是小型项目可以考虑Stream数据类型,具体使用将在后续有使用场景时介绍。

6、总结

        本文介绍了Redis 另外五种数据结构:bitmap、geo、hyperloglog、bitfield、stream,从使用命令入手,熟悉每个数据结构的使用场景和使用方式,帮助大家更加深入熟悉Redis。

·        本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)

        

这篇关于Redis 数据类型及其常用命令二(bitmap、geo、hyperloglog、bitfield、stream)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726109

相关文章

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

Java如何从Redis中批量读取数据

《Java如何从Redis中批量读取数据》:本文主要介绍Java如何从Redis中批量读取数据的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一.背景概述二.分析与实现三.发现问题与屡次改进3.1.QPS过高而且波动很大3.2.程序中断,抛异常3.3.内存消

Redis中的Lettuce使用详解

《Redis中的Lettuce使用详解》Lettuce是一个高级的、线程安全的Redis客户端,用于与Redis数据库交互,Lettuce是一个功能强大、使用方便的Redis客户端,适用于各种规模的J... 目录简介特点连接池连接池特点连接池管理连接池优势连接池配置参数监控常用监控工具通过JMX监控通过Pr

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动