Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO

Hash

说起Hash大家其实很容易想到java中的集合类HashMap,这里其实就是一个套娃,键值对套了一层键值对他的指令也很简单

首先是设置键值对

这里就是设置两个键值对

我们可以进行获取

使用hget获取值

或者我们使用hgetall来查询所有值

hmset/hmget是批量查找查询,和上面的操作类似

同样的hdel是删除指令

hlen查看键值对数量

hexists 表 字段

这里是查找表中是否存在这个变量

hkeys 字段

hvals 字段  这里就是单独查询字段键和值的全部

hincrby /hincrbyfloat 自增操作,见下图

hsetnx 如果键不存在则可以设置,这里的nx就是not\ exist的意思,存在就不赋值

Set

一说到这个我们就可以想到HashSet 的特征   有序且无重复值

sadd key values

这里我们可以一次性加入多个数值

smembers key 查看set的所有元素

sismember set  数值或者字符串   1 表示存在  0表示不存在

srem key value   删除元素 可删除多个元素

'

scard key   查看set中的元素个数

srandmember 随机展示set中的一个元素   (不删除)   可以应用于猜你喜欢  可能认识的人?

spop  随机弹出一个元素(删除)

smove key1  key2 7     将后面的7从key1中加入key2

注:7一定得在key1存在

集合运算

sdiff  a b 查看 两个集合的差集   只在 a 不在 b 的元素

sinter   查看交集

sintercard  集合数量   集合 1  集合 2....  返回的是后面所有的集合取交集去重后基数的数量

Zset

在set 的基础上加上了 一个分数score 这也造成了其可排序的特性  按照分数排序  

有人可能会说和set有啥区别,区别就是这里对于字符串他也可以排序

注:这里的分数在数值前面

zadd key  score value

按照下标遍历数据

zrange key start end   (0 -1表示全部遍历)

加上withscores就是带上分数一起遍历

zrangebyscore key 区间  可以找出分数在这个区间之内的values

zscore key member  查看元素的分数

zcard key 查看元素个数

zrem key value 根据值删除

zincrby key n  member

给 member 加上 n分

zcount  key  range  数一下这个范围有几个数字

zrank key member

查看对应元素的下标值

Bitmap


相信大家都听过这种数据结构

bitmap常用于比如说统计签到天数,如果用一张表来表示这里占的空间就太大了

或者还可以用于统计电影是否被播放过,用户是否登录等状态

我们使用bitmap就可以实现一个二进制位标识签到或者没签到两个状态

底层数据结构还是String本质还是一种数组

下面我们来介绍基本指令操作吧

setbit key offset val

这里是堆位图的某一位进行设置,只能设置01 offset表示偏移量

这里就是对第五位设置为0或者1  返回值位设置之前的位数据

getbit key offset   获取第几位的比特数据

bitcount key start end

查看此bitmap在范围内的1的数量

bitop operation destkey key 这里的operation指的是与或非

将对应的两个bitmap进行位运算并且放在第一个第一个bitmap中

strlen  key  统计占用多大的字节(注意八位为1字节)

HyperLogLog

基数统计

主要是用于统计UV的大型数据

注意这里只用于统计而并不保存可视数据

场景:统计天猫亿级UV的统计

注:UV的含义是独立访客    比如统计一下访问量 这里对应的相同IP无论访问多少次其实都只算一次访问

常用的指令也比较少  例如

pfadd key  values

增加数量

pfcount key 就是统计数量

注意这里是不重复的哦

合并两个hyperloglog

pfmerge hylog3 hylog4 这里就是将两个hyperloglog合并并且赋给 hylog3

GEO

这里的GEO的其实是为了实现一个范围地理区域的查找

主要的应用是在打车上,比如查看附近的空车辆,查看附近的人?等等

有人会问,为啥不使用sql来查找呢

这里我可以给出几点缺陷

1.sql的查找主要是矩形查找而这里可以做到圆形查找

2.sql的性能问题

下面我们来学习指令

其实这里的GEO可以看做是zset的子类,所以可以使用zget查看

本质上也是key带上一个map

这里就不做过多介绍

geoadd 增加节点

比如geoadd 长城 精度  纬度

查看两个经纬度之间的距离

geodist city 天安门 长城 单位(m/km)

geohash 返回某个 key的base32编码


e2de1af143f5486fa5baaa72a658f35d.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
5天前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
118 85
|
21天前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
34 5
|
1月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
41 1
|
2月前
|
存储 NoSQL 定位技术
Redis GEO
10月更文挑战第19天
43 1
|
2月前
|
NoSQL 算法 关系型数据库
Redis HyperLogLog
10月更文挑战第17天
33 2
|
2月前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
45 1
|
存储 NoSQL 算法
Redis之zset实现滑动窗口限流
Redis之zset实现滑动窗口限流
2013 0
Redis之zset实现滑动窗口限流
|
2月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
82 6
|
2天前
|
缓存 监控 NoSQL
Redis经典问题:缓存穿透
本文详细探讨了分布式系统和缓存应用中的经典问题——缓存穿透。缓存穿透是指用户请求的数据在缓存和数据库中都不存在,导致大量请求直接落到数据库上,可能引发数据库崩溃或性能下降。文章介绍了几种有效的解决方案,包括接口层增加校验、缓存空值、使用布隆过滤器、优化数据库查询以及加强监控报警机制。通过这些方法,可以有效缓解缓存穿透对系统的影响,提升系统的稳定性和性能。
|
1月前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题