Redis-五种数据结构

1.五种数据结构图解如下

在这里插入图片描述

1.1 String数据结构

命令: get 、 set 、 del 、 incr、 decrget 、 set 、 del 、 incr、 decr
联想java: map<String,value> value可对应数字,字符串,jpg图片或者序列化的对象。

实战场景:

1.缓存: 经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力

2.计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源

3.session:常见方案spring session + redis实现session共享

1.2 Hash (哈希)

命令: hget 、hset 、 hdel
对应java:Map<String,hashMap<String,Value>>

实战场景:

缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等。

1.3 链表

在这里插入图片描述
对应java数据结构:list

数据结构转化:
1.单边进单边出
lpush+lpop=Stack(栈)

2.一边进一边出
lpush+rpop=Queue(队列)

3.lpush+ltrim=Capped Collection(有限集合)

Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

在这里插入图片描述

4.lpush+brpop=Message Queue(消息队列)

Redis Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

实战场景:

timeline:例如微博的时间轴,有人发布微博,用lpush加入时间轴,展示新的列表信息。

1.4 Set 集合

Redis的Set是string类型的无序集合。可联想java中的Set数据结构
命令:sset 、srem、scard、smembers、sismember
在这里插入图片描述

1.5 zset 有序集合

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。
命令:zadd zrangebyscore ZSCORE key member
在这里插入图片描述
实战场景:

1.排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

参考:
https://www.cnblogs.com/haoprogrammer/p/11065461.html

发布了37 篇原创文章 · 获赞 6 · 访问量 4645

猜你喜欢

转载自blog.csdn.net/littlewhitevg/article/details/105485965