【Redis】redis都有哪些数据类型?分别在哪些场景下使用比较合适呢?(转载)

(1)string
这是最基本的类型了,没啥可说的,就是普通的set和get,做简单的kv缓存

(2)hash
这个是类似map的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在redis里,然后每次读写缓存的时候,可以就操作hash里的某个字段。

key=150

value={
“id”: 150,
“name”: “zhangsan”,
“age”: 20
}

hash类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值

value={
“id”: 150,
“name”: “zhangsan”,
“age”: 21
}

(3)list
有序列表,这个是可以玩儿出很多花样的

微博,某个大v的粉丝,就可以以list的格式放在redis里去缓存

key=某大v

value=[zhangsan, lisi, wangwu]

比如可以通过list存储一些列表型的数据结构,类似粉丝列表了、文章的评论列表了之类的东西

比如可以通过lrange命令,就是从某个元素开始读取多少个元素,可以基于list实现分页查询,这个很棒的一个功能,基于redis实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走

比如可以搞个简单的消息队列,从list头怼进去,从list尾巴那里弄出来

(4)set
无序集合,自动去重

直接基于set将系统里需要去重的数据扔进去,自动就给去重了,如果你需要对一些数据进行快速的全局去重,你当然也可以基于jvm内存里的HashSet进行去重,但是如果你的某个系统部署在多台机器上呢?

得基于redis进行全局的set去重

可以基于set玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看俩人的共同好友是谁?对吧

把两个大v的粉丝都放在两个set中,对两个set做交集

(5)sorted set
排序的set,去重但是可以排序,写进去的时候给一个分数,自动根据分数排序,这个可以玩儿很多的花样,最大的特点是有个分数可以自定义排序规则

比如说你要是想根据时间对数据排序,那么可以写入进去的时候用某个时间作为分数,人家自动给你按照时间排序了

排行榜:将每个用户以及其对应的什么分数写入进去,zadd board score username,接着zrevrange board 0 99,就可以获取排名前100的用户;zrank board username,可以看到用户在排行榜里的排名

zadd board 85 zhangsan
zadd board 72 wangwu
zadd board 96 lisi
zadd board 62 zhaoliu

96 lisi
85 zhangsan
72 wangwu
62 zhaoliu

zrevrange board 0 3

获取排名前3的用户

96 lisi
85 zhangsan
72 wangwu

zrank board zhaoliu

原文链接:https://blog.youkuaiyun.com/weixin_43469680/article/details/108194015?utm_medium=distribute.pc_feed.none-task-blog-personrec_tag-7.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-personrec_tag-7.nonecase&request_id=5f44276ecea070620e93fd0b

为了帮助初学者理解Redis的内存数据结构存储机制及其应用,强烈推荐查阅《redis讲解 ppt》。这份PPT通过深入浅出的方式,详细介绍了Redis的核心特性与架构、数据持久化、复制机制、容量规划、表设计等多个方面,对于理解Redis的工作原理及应用场景非常有帮助。 参考资源链接:[redis讲解 ppt](https://wenku.youkuaiyun.com/doc/6479989dd12cbe7ec33284fd?spm=1055.2569.3001.10343) Redis作为高性能的键值对数据库,其内存数据结构存储主要依赖于其数据类型,包括字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)、哈希表(Hashes)以及位图和超日志等。每种数据类型都有其特定的内部编码方式,例如字符串可以存储为简单动态字符串(SDS),列表可以存储为压缩列表(ziplist)或双端链表(linkedlist)等。这些数据结构设计使得Redis能够高效地处理大量数据和快速响应各种请求。 在实际应用中,Redis常见的使用场景包括缓存系统、会话缓存、消息队列系统、排行榜/计数器系统、社交网络中的好友关系、地理位置信息等。由于Redis的读写速度快,并且支持丰富的数据结构和操作,它非常适合用于减轻数据库压力、提高应用性能和处理临时数据。 通过学习《redis讲解 ppt》,你将能够掌握Redis的基本概念和操作,为将来的深入学习和应用打下坚实的基础。 参考资源链接:[redis讲解 ppt](https://wenku.youkuaiyun.com/doc/6479989dd12cbe7ec33284fd?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值