redis中的常用基础对象有哪些


这篇文章主要介绍redis中的常用基础对象有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一:前言redis中有几种常用的基础对象,如string、hash、list、set、zset等,下面我们就来介绍下他们的底层实现数据结构与常见应用场景和特点。二:redisobject源码位置位于server.h文件中605行开始2.1 typeredis中实际的对象类型,分为5种0-4声明。位于文件server.h中466行2.2 encodingredis五种对象string、list、hash、set、zset会用到的八种编码格式,每一种编码都对应一个数据结构2.3 refcountredis中内存的回收采用了比较简单的引用计数法进行,每个对象引用就refcount + 1,当这个引用计数减少为0时内存就会被回收三:string3.1 常用场景分布式锁:分布式锁的实现基础就是采用string的命令setnx用户信息:很多时候用户信息都会序列化后存到redis中缓存,但是这里可以考虑下hash。如果仅仅使用用户数据部分信息,毕竟序列化与反序列化也是一笔开销3.2 编码格式int:当字符串中全是数字时会采用int编码,这是真正的二进制数据存储embstr:内存地址连续,内存一次申请。字符串长度小于44raw:底层采用sds实现,相对于embstr差别在于sds的创建与redisobject的创建分两次实现3.3 常用命令四:list4.1 常用场景消息队列:一般不怎么用,毕竟各种MQ、Kafka都已经很成熟了。而且redis实现消息队列并不保证数据的安全排行榜计算:这种仅仅适用于定时计算更新,不能用于实时更新排行。比如美团每天计算区域入驻商家排行点赞列表:比如微信中的点赞(不知道咋做的,猜一下)4.2 编码格式quicklist:快速列免费云主机域名表,之前版本有使用linkedlist和ziplist。目前使用的quicklist为两者结合体,详情可以查看Redis(一) — 浅谈Redis中的数据结构4.3 相关参数配置配置参数位置位于redis.con文件中1083行和1099行list-max-ziplist-size:配置单个ziplist大小list-compress-depth:配置LZF压缩算法开始节点4.4 常用命令五:Hash5.1 常用场景商品对象、用户对象。这个场景需要验证性对待,如果商品对象、用户对象信息每次都需要全量的话不妨存string,但是仅仅部分使用就可以考虑使用hash结构SKU等信息,这个场景下hash就比较合适了。一个hash结构中存储某个商品所有sku5.2 编码格式ziplist:使用ziplist存储hash结构时一个数据会使用相邻两个ziplistEntry存储field和valuehashtable:当数据存储超过参数限制后就会将其底层结构由ziplist转换为dict进行存储5.3 相关参数配置hash-max-ziplist-entries:默认512,即ziplist节点为1024。当节点数量超过该值限制后底层数据结构转为dicthash-max-ziplist-value:默认64,当hash中插入任意一个长度超过该限制的value后底层数据结构转换为dict5.4 常用命令六:Set6.1 常用场景推荐:通过sinter命令计算交集,比如美团给你推荐附近外卖时就可以根据你的外卖记录与附近商家计算交集推送安全提示:微信群成员保存在一个set中,用户好友也保存在set中。当用户加入群聊时可以提醒非好友用户注意安全6.2 编码格式intset:整数集合,用于存储set集合中所有value都是整数的数据hashtable:field用于存储set集合值6.3 相关参数配置set-max-inset-entries:默认512,表示当元素数量超过限定以后转换为hashtable编码6.4 常用命令七:Zset7.1 常用场景排行榜:美团要做一个销量排行榜,就可以使用店家的订单做score,这个查询出来的结果就是有序的权重队列:score作为优先级,这样取出来的数据权重都是最大优先执行的延时任务:score作为任务启动执行时间,取值时判断该值执行即可7.2 编码格式ziplist:与hash有异曲同工之妙,都是使用相邻两个节点存储score和memberskiplist:跳跃表结构,可以查看Redis(一) — 浅谈Redis中的数据结构7.3 相关参数配置zset-max-ziplist-entries:默认值128,指定ziplist存储元素最多128个。超过转换为skiplistzset-max-ziplist-value:默认值64,存储数据值最大64字节,超过转换为skiplist7.4 常用命令以上是“redis中的常用基础对象有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注百云行业资讯频道!

相关推荐: redis debug命令详解

redis debug命令提供了几个非常实用的debug功能,本文介绍下re免费云主机域名dis下的debug命令。 debug segment 让redis发生段错误,如果开启了coredump,则会产生core文件。这个命令实现很简单,直接往一个非法地址上…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/03 22:07
下一篇 01/03 22:07