Redis有哪些常用的数据结构?

2024-04-10 14:52:0603:31 1202
所属专辑:Redis面试通关12讲
声音简介

大家好,我系渣渣骥,今天跟大家分享的主题是:Redis有哪些常用的数据结构?

一般的回答是有字符串、列表、集合、有序集合和HASH此外还有Bimap, HyperLogLog等。

本节内容希望读者能够多打开文稿查看,里面有很多更为详细的命令的使用方法。

1.       字符串

  我们可以通过set key value设置一个字符串

  如:

  set username wolong

这样就把username设置为了wolong。如果key已经持有其他值,set命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。

这时,我们可以使用

  del key 命令将其删除

  如:

  del username

或者设置过期时间:

  expire key timeout(单位为秒)

也可以在设置值的时候,一同指定过期时间:

  set key value EX timeout

  或:

  setex key timeout value

查看过期时间:

  ttl key

  如:

  ttl username

查看当前redis中的所有key

  keys *

 

2.       list列表:

Redis可以往列表两端添加元素,使用不同的命令。

在列表左边添加元素:

  lpush key value

将值value插入到列表key的表头。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,将返回一个错误。

在列表右边添加元素

  rpush keyvalue

将值value插入到列表key的表尾。如果key不存在,一个空列表会被创建并执行RPUSH操作。当key存在但不是列表类型时,返回一个错误。

查看列表中的元素

  lrange key start stop

返回列表key中指定区间内的元素,区间以偏移量startstop指定,如果要左边的第一个到最后的一个lrange key 0 -1

移除列表中的元素:

移除并返回列表key的头元素:

  lpop key

移除并返回列表的尾元素:

rpop key

移除并返回列表key的中间元素:

  lrem key count value

将删除key这个列表中,count个值为value的元素。

指定返回第几个元素

  lindex key index

将返回key这个列表中,索引为index的这个元素。

获取列表中的元素个数

  llen key

  如:

  llen languages

删除指定的元素

  lrem keycount value

  如:

  lrem languages 0 php

根据参数 count 的值,移除列表中与参数 value 相等的元素。count的值可以是以下几种:

count> 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count

count< 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值。

count = 0:移除表中所有与value 相等的值。

 

3.       set集合:

setlist的却区别在于,list中可以有重复元素,但是set中不会有重复的元素

添加元素:

  sadd set value1 value2....

  如:

  sadd team xiaotuo datuo

查看元素:

  smembeers set

  如:

  smembers team

移除元素:

  srem set member...

  如:

  srem team xiaotuo datuo

查看集合中的元素个数:

  scard set

  如:

  scard team1

集合也十分方便求交集、并集和差集

获取多个集合的交集

  sinter set1 set2

  如:

  sinter team1 team2

获取多个集合的并集

  sunion set1 set2

  如:

  sunion team1 team2

获取多个集合的差集

sdiffset1 set2

如:

sdiffteam1 team2

 

4.       hash

  添加一个新值:

  hset key field value

  如:

  hset website baidu baidu.com

将哈希表key中的域field的值设为value

如果key不存在,一个新的哈希表被创建并进行 HSET操作。如果域 field已经存在于哈希表中,旧值将被覆盖。

获取哈希中的field对应的值:

  hget key field

  如:

  hget websitebaidu

删除field中的某个field

  hdel keyfield

  如:

  hdel website baidu

获取某个哈希中所有的fieldvalue

  hgetall key

  如:

  hgetall website

获取某个哈希中所有的field

  hkeys key

  如:

  hkeys website

获取某个哈希中所有的值:

hvals key

如:

hvalswebsite

判断哈希中是否存在某个field

hexists key field

如:

hexistswebsite baidu

获取哈希中总共的键值对:

hlen field

如:

hlenwebsite

 

5.       有序集合

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

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

有序集合的成员是唯一的,但分数(score)却可以重复。

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

redis127.0.0.1:6379> ZADD mySortset 1 redis

(integer)1

redis127.0.0.1:6379> ZADD mySortset 2 mongodb

(integer)1

redis127.0.0.1:6379> ZADD mySortset 3 mysql

redis127.0.0.1:6379> ZRANGE mySortset 0 10 WITHSCORES

1)"redis"

2)"1"

3)"mongodb"

4)"2"

5)"mysql"

6)"3"

 

另外除了基本的数据结构以外,如果回答出Redis支持发布/订阅操作,会是一个加分项:

向某个频道发布消息使用命令:

       publishchannel message

订阅某个频道的消息:

       subscribe channel

 

另外,Redis还有Bitmap HyperLoglog等用于统计的数据结构,将在下一节中进行分享。



用户评论

表情0/300
喵,没有找到相关结果~
暂时没有评论,下载喜马拉雅与主播互动
猜你喜欢
艺术|有哪些慰藉

艺术|让人清醒的美学积累||人们常说艺术非常重要,却很少有人告诉我们确切原因。我自己的感受是每次看了美术展、艺术展之后,心情都会很放松或者特别愉快。

by:各色飞船

尿频原因有哪些

尿频原因有哪些希望大家可以订阅我的专辑,并关注我,欢迎评论、转发、收藏、点赞,投月票,希望让更多的人看到,帮助到更多人。

by:孙华贵

肾虚有哪些表现

肾虚有哪些表现肾虚的表现多种多样,常见的有腰膝酸软、头晕耳鸣、失眠多梦、记忆力减退、脱发、早衰、性功能减退等。根据肾虚的不同类型,如肾阳虚、肾阴虚、肾精不足等,...

by:孙华贵

血糖高有哪些表现

糖尿病是现在比较常见的一种病症了,不健康的生活方式和环境使越来越多的人有患病的风险。所以任何人都有可能患糖尿病;糖尿病有哪些症状?除与高血糖有关的三多一少外还有...

by:听友219908563

慢性胃炎有哪些种类

《慢性胃炎有哪些种类》是一部详细介绍慢性胃炎的音频专辑。它详细阐述了慢性胃炎的多种类型,包括浅表性胃炎、萎缩性胃炎、特殊类型胃炎等,并解释了每种类型的特点和成因...

by:孙华贵

两性结合有哪些技巧

两性结合有哪些技巧专辑声音还是挺不错的,内容通俗易懂,并举例说明,精选了热门问题,进行分析思考,然后回答。希望大家可以订阅我的专辑,并关注我,欢迎评论、转发、收...

by:孙华贵

遇见哪些有趣的灵魂

有趣的直播时刻,记录下来

by:慕容公子_鹿苑X

强军有哪些关键词?

原标题:热血沸腾!看习近平强军关键词来源:新华网主播:海清强国必须强军。在我国由大向强发展的关键阶段,必须要用强军梦捍卫中国梦。党的十八大以来,在习...

by:喜马拉雅小红花

喝茶有哪些养生功效

喝茶有哪些养生功效喝茶主要可以起到消除疲劳的作用,可以增强思维能力,同时对于心脑血管也可以起到保护作用,并能中和血液中酸性物质。而儿童经常饮茶则可以预防龋齿,女...

by:海霞煦时

婚姻和恋爱有哪些不同

在人类社会中,婚姻和恋爱都占据着重要的位置,它们是构成人际关系的基石,代表着人类对情感、责任和承诺的追求

by:钱多多Luck1314