首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
物联网/工业互联网
›
物联网
›
Redis数据布局,渐进式遍历,数据库管理 ...
返回列表
发新帖
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实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表