如何掌握Redis场景设计

技术如何掌握Redis场景设计这篇文章主要讲解了“如何掌握Redis场景设计”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何掌握Redis场景设计”吧!一、常用指令接下

本文主要讲解“如何掌握Redis场景设计”,文中讲解内容简单明了,易学易懂。现在,请跟随边肖的思路,一起学习学习《如何掌握Redis场景设计》!

一、常用指令

接下来,我们来看看每个数据结构的常用指令,我们会用一个表格清晰地展示出来:

如何掌握Redis场景设计

二、场景解析

1.1string存储

如何掌握Redis场景设计

1.2String 类型使用场景

场景一:商品库存数

在商业中,商品库存数据是热点数据,交易行为会直接影响库存。Redis自己的字符串类型提供了:

设置goods _ id 10id设置为good_id的商品的库存初始值为10;

decr goods _ id购买商品时,库存数据减少1。

依次类推的场景:,产品的访问量,问题或回复的点赞数等。这种计数场景可以通过Redis来实现。

场景二:时效信息存储

Redis的数据存储具有自动失效能力。也就是说,存储的键值可以用过期时间来设置:set (key,value,过期时间)。

例如,用户在登录App时需要获取登录验证码,验证码在30秒内有效。然后我们可以用String存储验证码,设置30秒的过期时间。

如何掌握Redis场景设计

2.1hash存储数据

如何掌握Redis场景设计

2.2Hash 类型使用场景

Redis需要序列化和转换对象(比如用户信息),然后存储。

另一种形式是将对象数据转换为JSON结构化数据,然后将JSON字符串存储在Redis中。

对于一些对象类型,还有另一种方便的类型,就是按照Redis的Hash类型存储。

例如,我们存储网站用户的一些基本信息,我们可以使用:

这样就存储了一个用户的基本信息,包括:{姓名:小明,电话:“123456”,性别:“男”}。

当然,类似的场景还有很多,比如存储订单数据、产品数据、商家基本信息等。以淘宝购物车为主

如何掌握Redis场景设计

2.3实现信息存储的优缺点

1.原生:

设置user: 1:name james

设置user:1:age 23

设置user:1:sex男孩;

优点:简单直观,每个键对应一个值。

缺点:按键太多,占用内存太多,用户信息太分散,在生产环境中用不上。

2.将对象序列化存入

redis set user :1 serial ize(UserInfo);

优点:编程简单,如果合理使用序列化,内存利用率高。

缺点:的序列化和反序列化有一定的开销。在更新属性时,应该取出所有的userInfo进行反序列化,更新后序列化为redis。

3.hash存储:

hmset用户:1姓名詹姆斯年龄23岁性别男孩

优点:简单直观,合理使用可以减少空内存。

间消耗

缺点:要控制ziplist 与hashtable两种编码转换,Mhashtable会消耗更多内存。

3.1List 类型使用场景

list 是按照插入顺序排序的字符串链表。可以在头部和尾部插入新的元素(双向链表实现,两端添加元素的时间复杂度为 O(1)) 。

如何掌握Redis场景设计

场景一:消息队列实现

目前有很多专业的消息队列组件 Kafka、RabbitMQ 等。 我们在这里仅仅是使用 list 的特征来实现消息队列的要求。在实际技术选型的过程中,大家可以慎重思考。

list 存储就是一个队列的存储形式:

  1. lpush key value; 在 key 对应 list 的头部添加字符串元素;

  2. rpop key;移除列表的最后一个元素,返回值为移除的元素。

场景二:最新上架商品

在交易网站首页经常会有新上架产品推荐的模块, 这个模块是存储了最新上架前 100 名。

这时候使用 Redis 的 list 数据结构,来进行 TOP 100 新上架产品的存储。

Redis ltrim 指令对一个列表进行修剪(trim),这样 list 就会只包含指定范围的指定元素。

start 和 stop 都是由 0 开始计数的,这里的 0 是列表里的第一个元素(表头),1 是第二个元素。

如下伪代码演示:

4.1set 类型使用场景

set 也是存储了一个集合列表功能。和 list 不同,set 具备去重功能。当需要存储一个列表信息,同时要求列表内的元素不能有重复,这时候使用 set 比较合适。与此同时,set 还提供的交集、并集、差集。

例如,在交易网站,我们会存储用户感兴趣的商品信息,在进行相似用户分析的时候, 可以通过计算两个不同用户之间感兴趣商品的数量来提供一些依据。

获取到两个用户相似的产品, 然后确定相似产品的类目就可以进行用户分析。

类似的应用场景还有, 社交场景下共同关注好友, 相似兴趣 tag 等场景的支持。

如何掌握Redis场景设计

4.2Set集合特殊的操作命令

setA={A,B,C} setB={B, C}

1)集合与集合之间的交集

sinter setA setB-->得到集合{B,C}

集合与集合之间的并集

sunion setA setB -->得到集合{A,B,C}

3)集合与集合之间的差集

sdiff setA setB-->得到集合{A}

4.3Set集合特殊的操作命令应用场景

如何实现微博的微关系设计?

如何掌握Redis场景设计

5.1 Zset有序集合

常用于排行榜,如视频网站需要对用户上传视频做排行榜,或点赞数与集合有联系,不能有重复的成员

如何掌握Redis场景设计

5.2Zset 类型使用场景

如何掌握Redis场景设计

感谢各位的阅读,以上就是“如何掌握Redis场景设计”的内容了,经过本文的学习后,相信大家对如何掌握Redis场景设计这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/49664.html

(0)

相关推荐

  • 狗狗感冒了会自己好吗,狗狗感冒了,吃感冒冲剂能好吗

    技术狗狗感冒了会自己好吗,狗狗感冒了,吃感冒冲剂能好吗狗狗感冒在天气忽冷忽热的时候比较多见,如果狗狗不小心着凉感冒,特别是在天气忽冷忽热的时候,或者是比较冷的天气里总是趴在冰冷的地板上,一着凉感冒就会出现打喷嚏、流鼻涕等

    2021年10月20日
  • imp导入乱码怎么办

    技术imp导入乱码怎么办小编给大家分享一下imp导入乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 在i

    攻略 2021年11月11日
  • Python怎么实现装饰器

    技术Python怎么实现装饰器小编给大家分享一下Python怎么实现装饰器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!普通装饰器:直接上代码

    攻略 2021年11月2日
  • Linux系统移远EC20 4G模块移植的方法是怎样的

    技术Linux系统移远EC20 4G模块移植的方法是怎样的这篇文章给大家介绍Linux系统移远EC20 4G模块移植的方法是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。硬件平台:迅为i.MX

    攻略 2021年10月22日
  • 抖音刷千粉,抖音刷粉1000人多少钱?

    技术抖音刷千粉,抖音刷粉1000人多少钱?抖音快速增长粉料的方法抖音无疑是目前新媒体中增长粉料最简单、增长最快的平台。从前,成都小甜甜一夜涨粉五百万,后来,灵魂当铺一天涨粉七十五万。这样的涨粉速度在其他平台是难以想象的。

    测评 2021年10月19日
  • 不同程序员的Python代码风格有哪些

    技术不同程序员的Python代码风格有哪些这篇文章主要讲解了“不同程序员的Python代码风格有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“不同程序员的Python

    攻略 2021年11月18日