游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

了解redis底层原理,自己手写实现jedis

  一、Jedis实现原理
  要自己手写jedis,首先要了解jedis的原理,我们在命令窗口输入set、get等命令背后的实现原理是什么?
  大白话讲就是jedis通过tcp连接发送消息到redis服务器,接收到回复消息后再解析出来即可(我们执行的命令如setnametest等都是按协议构造的),消息按约定好的规范,这个规范就是RESP协议
  resp协议官网说明:http:www。redis。cntopicsprotocol。html
  二、RESP协议
  resp协议定义了5种命令格式,间隔符号,在Linux下是r,在Windows下是
  1、单行的简单字符串SimpleStrings:以加号开头,格式:字符串r127。0。0。1:6379setnametest2022OKrediscli客户端显示的内容,服务端实际返回内容是:OKr
  2、错误Errors,以减号开头格式:错误前缀错误信息r127。0。0。1:6379test2022(error)ERRunknowncommandtest2022服务端实际返回内容是:ERRunknowncommandtest2022r
  3、整数型Integers,以:冒号开头格式::数字r
  SETNX、DEL、EXISTS、INCR、INCRBY、DECR、DECRBY、DBSIZE、LASTSAVE、RENAMENX、MOVE、LLEN、SADD、SREM、SISMEMBER、SCARD等命令都会返回整数127。0。0。1:6379LPUSHinfotest022MoreLove(integer)2服务端实际返回内容是:2r
  4、大字符串类型BulkStrings(多行字符串),以34;美元符号开头,长度限制512M
  格式:字符串的长度r字符串r
  多用于返回二进制安全的字符串,0rnrn代表空字符串,rediscli收到后显示的是;1rn表示不存在,rediscli收到显示的是nil127。0。0。1:6379GETmykeyfoobar服务端实际返回内容:6rfoobarr
  5、数组类型Arrays,以开头格式:数组元素个数r其他所有类型(结尾不需要r)
  不仅用于服务端向客户端发送命令,也可用于客户端向服务端发送命令
  eg:
  0r空数组
  2r3rfoor3rbarr数组包含2个元素,分别是字符串foo和bar
  3r:1r:2r:3r数组包含3个整数:1、2、3
  5r:1r:2r:3r:4r6rfoobarr包含混合类型的数组
  3r3rSETr2raar4rtestr命令:SETaatest127。0。0。1:6379LRANGEinfo011)moelove。info2)test2022服务端实际返回内容:2r12rmoelove。infor8rtest2022r
  三、代码手写实现
  理解了jedis实现原理,我们就可以手写实现了,当然前提是先搭建一个redis服务,我们在本机搭建了一个redisserver,端口号是6379publicclassMyJedis{privateSocketsocketnull;publicMyJedis(){try{redis服务器的ip和端口socketnewSocket(127。0。0。1,6379);}catch(Exceptione){e。printStackTrace();}}set命令:setkeyvaluepublicStringset(Stringkey,Stringvalue)throwsException{StringBuildersbnewStringBuilder();数组类型,包含3个元素sb。append(3)。append(r);第一个数组元素长度是3sb。append(3)。append(r);sb。append(SET)。append(r);第二个数组元素长度计算(传入的key的长度)sb。append(34;)。append(key。length())。append(r);sb。append(key)。append(r);第三个数组元素长度计算(传入的value长度)sb。append(34;)。append(value。length())。append(r);sb。append(value)。append(r);设置编码格式utf8socket。getOutputStream()。write(sb。toString()。getBytes(utf8));byte〔〕datanewbyte〔1024〕;socket。getInputStream()。read(data);returnnewString(data);}get命令:getkeypublicStringget(Stringkey)throwsException{StringBuildersbnewStringBuilder();数组类型,数组元素个数是2sb。append(2)。append(r);第一个数组元素长度是3sb。append(3)。append(r);sb。append(GET)。append(r);第二个数组元素长度计算(传入的key的长度)sb。append(34;)。append(key。length())。append(r);sb。append(key)。append(r);socket。getOutputStream()。write(sb。toString()。getBytes(utf8));byte〔〕datanewbyte〔1024〕;socket。getInputStream()。read(data);returnnewString(data);}publicstaticvoidmain(String〔〕args)throwsException{MyJedismyJedisnewMyJedis();myJedis。set(myjedis,test2);System。out。println(myJedis。get(myjedis));}}
  有任何问题欢迎留言交流,如有帮助请动动小手点个赞,多谢!

原本十分泛滥的山寨手机为什么现在很少见了?当年的山寨手机是质次价低,虽然质量不咋的,但是便宜啊,所以有市场。现在各大品牌手机也是全线开花,高中低档都有,选择面越来越宽,山寨手机的价格优势没了,自然就消失了。大家伙的钱包……鸿蒙OS迎来机遇,俄罗斯BQ公司手机被安卓禁用,或将转向鸿蒙2019年,在万物互联时代即将开启,5G元年正式到来之际,面对美国的制裁打压和谷歌的一纸安卓禁令,华为不得不正式推出自己的备用操作系统鸿蒙OS。鸿蒙OS的诞生是华为应对万……剑指谷歌苹果等美国科技巨头,欧盟敲定里程碑式数字法案欧盟数字经济新规的进度条再次向前推进,在欧洲经营的美国科技巨头压力倍增。24日,欧盟谈判代表敲定《数字市场法》最终细节,为这项重磅法案在明年生效奠定基础。该法案将给在欧洲经营的……网传阿里要裁员2万人,有的部门将彻底消失,如果是真的阿里会跌不管是网传还是真实的,阿里裁员都不不必大惊小怪,最近媒体报道,美国的百年企业通用公司,一分为三各自独立的公司,来适应新的市场环境。阿里如果裁员也是更好的适应市场变化,完全是企业……消息称苹果将推出iPhone硬件订阅服务据彭博社报道,苹果将推出硬件订阅服务,把iPhone和iPad捆绑销售。据称这项服务可能会在明年推出。根据彭博社的说法,每月的订阅费用并非简单地将设备价格除以12或24。……魅族M8手机你买的第一部手机是什么牌子的,怎么样人生第一台手机是魅族M8,是魅族公司于2009年发布的手机产品,起售价格为2380元。魅族M8机身颜色有:黑色,白色;外观造型设计为:……不要把印度禁止中国企业参与5G建设和中国交付3万台制氧机放一我刚刚看到一篇报道《接到中国3万台制氧机后,印度官方宣布:禁止中国企业参与5G建设》迅速成为了网络热点,评论迅速达到5000,阅读过近50万,就是说每一百人阅读就会有一个人评论……手机就能挖矿?警惕空气币割韭菜记者唐燕飞编辑陈羽借着比特币、狗狗币的造富神话,各种名目的数字货币可谓是八仙过海、各显神通。一种号称可以用手机挖币的派币(Pi)最近在朋友圈火了起来,微博、微信朋友圈到处……姚安娜和孟晚舟关系好吗?姚安娜和孟晚舟是华为老总任正非的女儿,都随母亲的姓氏。孟晚舟是任正非和第一任妻子所生,在华为担任要职。而姚安娜和孟晚舟是同父异母,对娱乐圈饶有兴趣。孟晚舟和姚安娜的关系好……NAND生产受污染SSD价格上涨或影响苹果设备由于西部数据和Kioxia的NAND生产设施的污染问题,全球SSD的价格可能会上涨,苹果设备可能会因此受到影响。西部数据表示,由于1月份在日本的两家工厂使用了受污染的材料……非洲将建首座毫米波段射电望远镜如今,非洲和欧洲的天文学家对非洲第一座毫米波段射电望远镜即将建成的消息反应热烈。非洲毫米波段射电望远镜是一台15米单口径射电望远镜,可以接收和分析约1毫米长的无线电波,计……冷门的骁龙845!8GB128GB狠心降600,还是卖不动努比亚,想必很多人都不太了解这个品牌或者几乎没有关注过,其实努比亚是中兴旗下主打互联网的一个子品牌,提到中兴手机的话,相信大家会更清楚一些的,中兴也是国产老手机品牌了,曾经和华……
全新威马EX5Z年轻人都爱集大成者在IMAGINEDAY威马畅想日线上发布会上,威马发布了两款全新车型一款是拥有800km续航、L4自动驾驶和5G互联赋能的威马首款纯电轿车量产概念版Maven;另一款则是以懒科……试驾吉利星越L碾压20万合资SUV,真有这么神?在试驾吉利星越L之前,我们刚刚得知星越L上市30天,销量破万的消息,可见这台披着紧凑型SUV外衣的中型SUV在1318万元市场确实拥有不少优势。也正因如此,我们希望站在消……华为荣耀20s新机发布,自拍画质再升级,颜值价格收割女神芳心华为荣耀系列,一直主打性价比,高配低价质量好,受到市场的青睐,销量十分之不错。最近,华为荣耀发布新系列,荣耀20s,根据以往其它手机品牌的经验,S系列会比数字系列性能更好。但在……科技树终于被点亮,vivo正式发布OriginOS提到vivo手机或者iQOO手机,一定会提到FuntouchOS和iQOOUI,这两个UI虽然在整体使用中非常稳定,但对于目前用户对手机系统的依赖性和日益增加的需求来看,viv……手把手带你搭建LNMP架构!理论实战教程1、什么是LNMP架构LNMPLinuxNginxMysql(mariabd)PHPLinux:Linux是一套免费使用和自由传播的开源程序,是一个基于POS……浙江移动扎实推进断卡行动,切实维护人民群众合理权益斩断网络诈骗黑手,浙江移动全面推进断卡行动当前,全国电信网络新型违法犯罪高发,非法买卖电话卡、银行卡(以下简称两卡)用于电信网络诈骗的问题日益突出,严重损害人民群众切身利……华为mate40iPhone12将正面对决,麒麟1020鸿蒙苹果手机VS安卓阵营,总是有不少的话题,然而从性能上,真正能与iPhone叫板的机子并不多。其中,华为mate40就是可以与iPhone12拼一拼的机型,被提及几率很多。华为每……UNIT以雷霆之势驭运动之风UNIT运动版以雷霆之势驭运动之风惊鸿一瞥,目光再无去意。从此,世间焦点皆止于此。UNIT动感的体态在耀夜极光运动套件加持下,淬炼出一触即发的视觉印象,……告别时要用力一些,全新NSXTypeS诠释更快更强导语提到日本的超跑,不管是不是本田迷,NSX想必是大家公认的经典且唯一的车型:首辆采用F1设计理念打造的超跑,史上第一款使用全铝单体横造技术的车型可以看出,NSX从研发之……为啥选择全新第四代汉兰达?可走万水千山也可城中追风我是一个媒体人,从业已16年。很多人都认为,汽车媒体人肯定特会挑车,但当我自己遇到这个问题的时候,才发现其实也很痛苦。开门见山地说:在我体验过很多车型甚至包括豪华品牌的车……在我村里子曾经发生一件匪夷所思的事情,直到昨天才解开我的疑惑白苏说文事情的女主角是跟我从小青梅竹马的,暂且称呼她为A吧,不过我已经十几年没见到她了,那一别是在初二,具体的故事下面请听我娓娓道来:我8岁以前跟着父母一直在外地,……再见了荷花垅转盘长虹立交桥群胎死腹中前两天在网上看到荷花垅转盘将进行为期90天的施工改造的行车提醒,发现荷花垅转盘已经有二十年的历史了,现在这边经常拥堵,是应该好好改造下,在我印象中2019年出了一个长虹立交桥群……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网