Redis入门到超神 - 04 redis的5种数据结构

举报
陈皮的JavaLib 发表于 2021/06/09 22:39:34 2021/06/09
【摘要】 序号标题01Redis入门到超神 - 01 Redis介绍与安装02Redis入门到超神 - 02 Redis为什么默认16个数据库03Redis入门到超神 - 03 redis.conf配置文件详解04Redis入门到超神 - 04 redis的5种数据结构 Redis 五种数据结构 关于命令的具体用法推荐网站: Redis命令教程中文版 String 字符串 ...

Redis 五种数据结构

在这里插入图片描述
关于命令的具体用法推荐网站: Redis命令教程中文版

String 字符串

String 类型是 redis 中最基本的数据类型,一个 key 对应一个 value 。并且 String 类型是二进制安全的,意思是 redis 的 String 可以包含任何数据。例如数字,字符串,jpg图片或者序列化的对象。

常用命令:get ,set ,del ,incr ,decr,getset,incrby 等。

应用场景:

  1. 热点数据,常用数据,结果不经常变动数据缓存;
  2. 计数器,用户点赞数,pv/uv等。
  3. session,比如 spring session + redis 实现 session 共享。

List 链表

List 即链表(redis 使用双端链表实现的 List),它是有序的,value可以重复,可以通过下标取出对应的value值,左右两边都能进行插入和删除数据。List 的另一个应用就是消息队列,可以利用 List 的 PUSH 操作,将任务存在 List 中,然后工作线程再用 POP 操作将任务取出进行执行。

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

常用命令:linsert,llen,lpop,lpush,lrem,rpop,rpush等。

应用场景:

  1. 微博timeline
  2. 消息队列

Hash 哈希

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。它是一个Mapmap,指值本身又是一种键值对结构,如 value={{field1,value1},…fieldN,valueN}}。

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

常用命令:hexists,hget,hgetall,hdel,hlen,hkeys等等。

应用场景:缓存用户信息,等。

Set 集合

集合类型用来保存多个字符串的元素,集合中没有重复的元素;集合中的元素是无序的;不能通过索引下标获取元素;支持集合间的操作,例如多个集合取交集、并集、差集。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

常用命令:sadd 、srem、scard、smembers、sismember等。

应用场景:共同好友,共同爱好,用户打标签等。

zset 有序集合

和Sets相比,Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列。有序集合中的元素不可以重复,但是score 分数 可以重复。

常用命令:zadd,zcard, zrange,zscore,zrange等。

应用场景:各种排行榜,例如点赞数排行,关注数排行,等等。

文章来源: javalib.blog.csdn.net,作者:陈皮的JavaLib,版权归原作者所有,如需转载,请联系作者。

原文链接:javalib.blog.csdn.net/article/details/113815779

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。