Redis数据布局,渐进式遍历,数据库管理

[复制链接]
发表于 2025-10-20 10:44:38 | 显示全部楼层 |阅读模式
1.Redis的其他数据布局

前面我们紧张报告了Redis中比力常用的会合数据布局String,List,Hash,Set,Zset,但这并不代表Redis只用这几种数据布局尚有如Streams,Geospatial,Hyperloglog,Bitfields,Bitmap如许的数据布局,接下来我们对这些数据布局举行一下简朴的先容。
1.1 Streams流

用来模拟实现变乱的流传机制
Streams可以明白为一个队列,redis作为消息队列的紧张支持,属于是List的blpop/brpop的升级版本,可以更换传统List练习可靠的消息体系

1.2 Geospatial地理空间索引

用来存储坐标(经纬度),基于Zset实现的地理位置存储与查询
存储一些点之后,就可以给用户顶一个坐标,去从刚才存储的点里举行查找(按找搬家,矩形地区)
这些功能在实用于“附近的人/所在搜刮”,“共享单车停放热区”等与舆图相干的场景

1.3 Hyperloglog基数统计

概率型数据布局,用于高效估算海量数据的唯一值数量(基数)
前面我们讲过Set有一个应用场景就是统计服务器的UV(Unique Visitor),使用Set固然可以盘算UV,但最大的标题在于如果UV数据量非常大,Set就很斲丧空间(假设Set中存储userId,每个userId按照8个字节,1亿UV≈0.8G,而接纳Hyperloglog可以使用约12KB内存)
Hyperloglog不存储元素的内容,但是可以或许纪录元素特性,从而在新增元素的时间,就可以或许知道当前新增的元素是一个已经存在的还是一个新的元素,用于计数(纪录当前聚会合元素的个数),但无法告诉步伐员元素都是什么
Hyperloglog实用于盘算UV,去重计数等场景,不恰当准确计数或获取详细元素

1.4 Bitfields位域

本质上是准确举行位操纵的一种方法,针对字符串举行位操纵的扩展下令,支持原子性读写
位域具有机动位操纵,多范例支持的特点
Bitfields实用于用户权限,功能开关,及时计数器等场景

1.5 Bitmap位图

使用bit位来表现整数,位图本质上就是一个基于字符串的位数组,支持位操纵
位图具有高效存储,批量操纵的特点
Bitmap实用于用户在线状态,逐日签到等场景

2.渐进式遍历

Redis每次使用scan下令举行渐进式遍历键,进而办理直接使用keys获取键时大概出现的壅闭标题。每次scan下令的时间复杂度是O(1),但是要完备地完成全部键的遍历,必要实行多次scan
cursor:给Redis服务器一个提示
count:count和现实返回key个数不肯定雷同,不写默以为10
pattern:表现匹配的规则
type:指定魔种范例获取该范例的value
语法:scan cursor [MATCH pattern] [COUNT count] [TYPE type]
时间复杂度:O(1)
返回值:下次scan的游标(cursor)以及本次得到的键
示例:

 渐进式遍历,在遍历的过程中,不会在服务器这边存储任何的状态信息,此时的遍历是随时可以制止的,不会对服务器产生任何影响。渐进式遍历固然办理了壅闭标题,但如果在遍历过程中键有所厘革(增长,修改,删除),大概导致遍历时键的重复遍历大概遗漏,这点务必在现实开辟中思量

3.数据库管理

MySQL中有一个紧张的概念Database,一个MySQL服务器上可以有很多Database,一个Database可以有多个表,MySQL上可以随意创建/删除数据库。实在Redis也有Database如许的概念的,只不外不像MySQL那样随意,Redis中的Database是现成的,用户不能创建新的数据库,也不可以删除数据库
Redis中默认提供了16个数据库 0-15,这16个数据库中的数据是隔离的,默认环境下使用0号数据库
Redis提供了几个面向数据库的操纵,分别是dbsize(获取到当前数据库中key的个数),select,flushdb(删除当前数据库中的key),flushall(删除全部数据库中的key)下令
Redis通过  Select dbIndex(数据库编号)来实现数据库的切换




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表