架构秘笈:移花接木。使用MySQL模拟Redis
副问题[/!--empirenews.page--]
【大咖·来了 第7期】10月24日晚8点寓目《智能导购对话呆板人实践》
这年初,你看到的对象未必就是你以为的对象。一个mysql协议的后头,也许是tidb;一个linux呆板后头,也许是一个精简的docker;你认为xjjdog是个女的,但也许ta本身也不太清晰;而当你大喊php万岁的时辰,也许是研发职员和你开个打趣,重写了后缀,尔后端用的却是java。 各人都知道redis速率快,但它的容量和内存容量有关,很轻易到达瓶颈。有些互联网公司,直接行使redis作为后端数据库(在下服气)。当营业量暴增,就面对一个redis容量和价值的衡量题目。改营业代码是来不及了,只好用一些耐久化存储 ,来模仿redis的一些数据布局。 redis支持近十种数据范例,最常用的有5种。string、hash、zset、set、list等。本文将针对几种常见的数据布局,切磋一下常用操纵的模仿实现。 着实,我们所必要开拓的,就是一个redis署理proxy。redis的客户端,毗连上我们的署理之后,会举办协议理会。理会出来的呼吁,将会被模仿,然后按照设置的路由,定位到响应的mysql中。 也就是你所行使的redis,着实行使mysql来存储数据的。没有rdb,也没有aof。 Redis是文本协议 redis是文本协议,协议名称叫做RESP。RESP 是 Redis 序列化协议的简写。它是一种直观的文本协议,上风在于实现非常简朴,理会机能极好。 如图,Redis 协议将传输的布局数据,可以总结为 5 种最小单位范例。每个单位竣事时,同一加上回车换行标记 。 下面是几个法则:
好比,下面这个就是数组[9,9,6]的报文。
以是这个协议的理会和拼装,长短常简朴的。拿netty来说,就有codec-redis 模块供我们行使。 实现:数据布局计划 在数据表的计划上,我们发明,kv和hash在服从上没有什么不同,由于它可以或许直接按照key定位到。 反倒是zset,因为有排序的成果,造成了许多操纵的执行服从都不尽人意。 其它,因为我们差异的数据布局,是行使差异的表举办存储的。以是删除操纵,要在每张表上都执行一遍。 kv计划 kv,即string,是redis里最根基的数据范例。一个key对应一个value,string范例的值最大能存储512MB。 计划专用的数据库表rstore_kv,个中,rkey是主键。
set操纵
get操纵
del操纵
exists操纵
ttl操纵
hash计划 hash 是一个键值(key=>value)对荟萃。hash 出格适实用于存储工具。 计划专用的数据库表rstore_hash,个中,rkey和hkey是连系主键。
hset操纵
hget操纵
(编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |