缓存基本介绍api理解与使用james所有预习课件2redis的应用_第1页
缓存基本介绍api理解与使用james所有预习课件2redis的应用_第2页
缓存基本介绍api理解与使用james所有预习课件2redis的应用_第3页
缓存基本介绍api理解与使用james所有预习课件2redis的应用_第4页
缓存基本介绍api理解与使用james所有预习课件2redis的应用_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本课讲师:James老师Redis的API应用与使用一、Redis全局命令1,查看所有键:keys*setschooldongnaosethelloworld2,键总数dbsize//2个键,如果存在大量键,线上禁止使用此指令3,检查键是否存在:existskey//存在返回1,不存在返回04,删除键:delkey//delhelloschool,返回删除键个数,删除不存在键返回05,键过期:expirekeyseconds//setnametestexpirename10//10秒过期ttl查看剩余的过期时间6,键的数据结构类型:typekey//typehello//返回string,键不存在返回none二、单线程架构执行过程:发送指令-〉执行命令-〉返回结果执行命令:单线程执行,所有命令进入队列,按顺序执行单线程快原因:纯内存访问,单线程避免线程切换和竞争产生资源消耗问题:如果某个命令执行,会造成其它命令的阻塞client2,执行命令redis1,发送命令3,返回结果网络三、常用命令-字符串(设值)字符串类型:实际上可以是字符串(包括XMLJSON),还有数字(整形浮点数),二进制(图片音频视频),最大不能超过512MB设值命令:

setage23ex10//10秒后过期px10000毫秒过期

setnxnametest//不存在键name时,返回1设置成功;存在的话失败0setage25xx//存在键age时,返回1成功获值命令:getage//存在则返回value,不存在返回nil

批量设值:msetcountrychinacitybeijing批量获取:mgetcountrycityaddress//返回chinabeigjin,address为nil注意:若没有mget命令,则要执行n次get命令四、常用命令-字符串(计数)incrage//必须为整数自加1,非整数返回错误,无age键从0自增返回1decrage//整数age减1incrbyage2//整数age+2decrbyage2//整数age-2incrbyfloatscore1.1//浮点型score+1.1五、常用命令-字符串(追加)append追加指令:setnamehello;appendnameworld//追加后成helloworld字符串长度:sethello“世界”;strlenhello//结果6,每个中文占3个字节截取字符串:setnamehelloworld;getrangename24//返回llo六、常用命令-字符串(应用场景)键值设计:业务名:对象名:id:[属性]数据库为order,用户表user,对应的键可为order:user:1或order:user:1:name注意:redis目前处于受保护模式,不允许非本地客户端链接,可以通过给redis设置密码,然后客户端链接的时候,写上密码就可以了127.0.0.1:6379>configsetrequirepass123456临时生效

或者修改redis.confrequirepass123456,启动时./redis-serverredis.conf指定conf./redis-cli-p6379-a12345678//需要加入密码才能访问七、常用命令-字符串(场景实现)场景实践cache-demoJedisAllCommandTestSiteVisitNumTest八、常用命令-Hash哈希hash是一个string类型的field和value的映射表,hash特适合用于存储对象user:1:nameJamesuser:1:age18user:1字符串字符串nameJamesage18hash九、常用命令-Hash(命令)哈希hash是一个string类型的field和value的映射表,hash特适合用于存储对象

命令hsetkeyfieldvalue

设值:hsetuser:1namejames//成功返回1,失败返回0

取值:hgetuser:1name//返回james

删值:hdeluser:1age//返回删除的个数计算个数:hsetuser:1namejames;hsetuser:1age23;hlenuser:1//返回2,user:1有两个属性值批量设值:hmsetuser:2namejamesage23sexboy//返回OK

批量取值:hmgetuser:2nameagesex//返回三行:james23boy

判断field是否存在:hexistsuser:2name//若存在返回1,不存在返回0

获取所有field:hkeysuser:2//返回nameagesex三个field

获取user:2所有value:hvalsuser:2//返回james23boy

获取user:2所有field与value:hgetalluser:2//nameagesexjames23boy值增加1:hincrbyuser:2age1//age+1hincrbyfloatuser:2age2//浮点型加2十、常用命令-Hash(应用场景)数据库有张用户表结构如下:idnameagecity1jack23NULL2james18shanghai使用hash转存:user:1user:2id1namejackage23id2namejamesage18cityshanghai十一、三种方案实现用户信息存储优缺点1,原生:setuser:1:namejames;setuser:1:age23;setuser:1:sexboy;

优点:简单直观,每个键对应一个值缺点:键数过多,占用内存多,用户信息过于分散,不用于生产环境2,将对象序列化存入redissetuser:1serialize(userInfo);优点:编程简单,若使用序列化合理内存使用率高缺点:序列化与反序列化有一定开销,更新属性时需要把userInfo全取出来进行反序列化,更新后再序列化到redis3,使用hash类型:hmsetuser:1namejamesage23sexboy优点:简单直观,使用合理可减少内存空间消耗缺点:要控制ziplist与hashtable两种编码转换,且hashtable会消耗更多内存erialize(userInfo);十二、redis列表<list>user:1:info用来存储多个有序的字符串,一个列表最多可存2的32次方减1个元素abcdkeyvaluelpushlpoprpushrpop因为有序,可以通过索引下标获取元素或某个范围内元素列表,列表元素可以重复十三、列表命令:类型指令添加rpushlpushlinset查lrangelindexllen修改lset删除lpoprpoplremltrim阻塞blpopbrpop十四、列表命令:类型指令添加rpushlpushlinset查lrangelindexllen修改lset删除lpoprpoplremltrim阻塞blpopbrpop十五、列表-应用场景:1,每个用户有多个订单key为order:1order:2order:3,结合hmsethmsetorder:1orderId1money36.6time2018-01-01hmsetorder:2orderId2money38.6time2018-01-01hmsetorder:3orderId3money39.6time2018-01-01

2,把订单信息的key放到队列

lpushuser:1:orderorder:1order:2order:3

3,新产生了一个订单order:4,

hmsetorder:4orderId4money40.6time2018-01-01

4,追加一个order:4放入队列第一个位置

lpushuser:1:orderorder:4

5,当需要查询用户订单记录时:

ListorderKeys=lrangeuser:10-1//查询user:1的所有订单key值

for(Orderorder:orderKeys){hmgetorder:1}以订单为例子(不推荐使用redis做消息队列)十六、集全<set>:保存多元素,与列表不一样的是不允许有重复元素,且集合是无序,一个集合最多可存2的32次方减1个元素,除了支持增删改查,还支持集合交集、并集、差集;用户标签,社交,查询有共同兴趣爱好的人,智能推荐user:1:favithisfootballmusicvaluekey十七、集全<set>命令:类型命令元素操作existssaddsmembersrmscardspop集合交集sinter集合并集sunion集合差集sdiff将集合的结果另存到队列sinterstoresunionstoresdiffstore十八、集全<set>使用场景介绍:标签,社交,查询有共同兴趣爱好的人,智能推荐

使用方式:给用户添加标签:

sadduser:1:favbasballfballpqsadduser:2:favbasballfball............

或给标签添加用户

saddbasball:usersuser:1user:3saddfball:usersuser:1user:2user:3........

计算出共同感兴趣的人:

sinteruser:1:favuser2:fav十九、有序集合:常用于排行榜,如视频网站需要对用户上传视频做排行榜,或点赞数与集合有联系,不能有重复的成员scoremember1james21kate32jack46frank258tomuser:rankkeyvalue二十、有序集合与集合及队列区别:与LIST和SET对比数据结构是否允许元素重复是否有序有序实现方式应用场景列表是是索引下标时间轴,有序简单集合否否无标签,社交有序集合否是分值排行榜,点赞数二十一、有序集合命令:zaddkeyscoremember[scoremember......]命令zaddzremzincrbyzrangezrankzrevrankzrangebyscorezrevrangebyscorezcardzcountzinterstore二十二、有序集合-应用场景:排行榜系统,如视频网站需要对用户上传的视频做排行榜点赞数:zadduser:1:201801063mike//mike获得3个赞再获一赞:zincrbyuser:1:201801061mike//在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论