redis面试之数据结构
redis是面试中最常问的中间件,关于数据结构主要集中在列举和用法。下面我们就数据结构和主要的使用方式做一个描述。 redis五种数据结构
大家都知道redis的几种数据结构,包括string (字符串),hash(哈希),list(列表),set(集合),zset(有序集合)。下面我们来列举一下关于这几种结构的常用命令和一些使用场景。1、string结构
string是redis的最基本的数据类型。
string类型是二进制安全的,也就是说string里可以包含任何的数据类型。
string类型的值最大能存储512MB常用命令SET key value 设置指定key的值 MSET key value[key value ...] 批量设置key value SETNX key value 当key不存在时才存入value GET key 获取key的值 MGET key [key...] 批量获取key的值 DEL key [key] 删除key EXPIRE key seconds 设置key的过期时间 INCR key 将key中存储的数字值加一 DECR key 将key中存储的数字值减一 INCRBY key increment 将key存储的值加上指定的增量increment DECRBY key increment 将key存储的值减去指定的增量increment 应用场景
1、 普通的单值缓存
2、对象数据缓存(json格式)
3、分布式锁的应用
4、计数器的使用,使用INCR和DECR2、hash结构
redis hash 是一个string类型的field(字段)和value(值)的映射表,很适合存储对象。常用命令HSET key field value 将字段field的值设置为value HSETNX key field value 当field字段不存在时设置值value HMSET key filed value [field value ...] 批量设置字段field的值为value HGET key field 获取指定field的值 HMGET key field [field...] 批量获取field的值 HDEL key field [field ...] 删除field HLEN key 获取字段的数量 HGETALL key 获取指定key的所有field(字段)和value(值) HINCRBY key field increment field字段加上增量increment 应用场景
hash最适合的就是做对象缓存3、list结构
list是redis的字符串列表,可以选择将值插入到头部或尾部。常用命令LPUSH key value [value ...] 将一个或多个值插入列表头部 RPUSH key value [value ...] 将一个或多个值插入列表尾部 LPOP key 移除并返回key列表的头元素 RPOP key 移除并返回key列表的尾元素 LRANGE key start stop 获取start和stop范围内的元素 BLPOP key [key ...] timeout 移除并返回key列表的头元素,没有会阻塞或等待到超时 BRPOP key [key ...] timeout 移除并返回key列表的尾元素,没有会阻塞或等待到超时 应用场景
1、 可以利用list的头部尾部增删属性实现栈和队列
2、 可以用来实现时间轴模型,根据时间依次插入数据,使用LPUSH插入和LRANGE获取最近范围的数据4、set结构
set是redis的无序集合,是通过哈希表实现的,因此任何操作(添加、删除和测试成员的存在性等)的时间复杂度是O(1)。(无论集合中包含多少元素,时间都是常量)常用命令SADD key member [member ...] 向集合添加一个或多个元素 SREM key member [member ...] 移除元素 SMEMBERS key 获取key的所有元素 SCARD key 获取key的个数 SISMEMBER key member 判断member是否在key的集合内 SRANDMEMBER key [count] 从集合中选出count个元素,不删除元素 SPOP key [count] 从集合中选出count个元素,并删除元素 SINTER key [key ...] 交集运算 SINTERSTORE destination key [key ...] 计算交集将结果存入新集合destination SUNION key [key ...] 并集运算 SUNIONSTORE destination key [key ...] 计算并集将结果存入新集合destination SDIFF key [key ...] 差集运算 SDIFFSTORE destination key [key ...] 计算差集将结果存入新集合destination 应用场景
1、 可以根据set集合的不可重复的特性,统计一些像网站访问IP啊,访问用户啊这些信息,无论访问多少次,SADD加入的都只有一条。
2、 也可以使用SRANDMEMBER和SPOP获取数据的随机性 ,做一些抽奖的小程序等随机功能
3、 作为集合,可以利用交并运算等计算一些复杂的逻辑关系,比如说人物关系之间的网络关系。5、ZSet 有序集合结构
ZSet和set类似,都是字符串的非重复集合。不同之处在于,ZSet的每个成员都与分数相关,分数是用来进行排序的。然后可以使用分数来取一个范围内的数常用命令ZADD key score member [[score member] ...] 添加一个或多个元素 ZREM key member [member ...] 删除元素 ZSCORE key member 返回member的分数值 ZINCRBY key increment member 增加increment增量 ZCARD key 获取成员数 ZRANGE key start stop [WITHSCORES] 通过指定区间内的成员 ZREVRANGE key start stop [WITHSCORES] 倒序通过指定区间内的成员 ZUNIONSTORE destkey numkeys key [key ...] 计算并集 ZINTERSTORE destkey numkeys key [key ...] 计算交集
应用场景:
ZSet是有序的集合,可以使用它来做一个排行榜。
运输保鲜就选冷链物流近日,农业农村部印发十四五全国农产品仓储保鲜冷链物流建设规划,积极推进农产品仓储保鲜冷链物流设施建设,提升农产品产地低温储运能力。冷链物流一般指冷藏冷冻类食品在生产贮藏运输销售到消
赵薇作品纷纷下架,而早在几年前就已暗示就在昨晚,赵薇主演的作品纷纷将其除名,随后,他所出演的这些作品也是纷纷遭到下架处理,虽然这样的处理结果既是意料之中,也是意料之外,尤其对赵薇的处理,更是在大众不知道原因的情况下,直
因工作意外离世的六位演员,个个都是意难平,最小的仅26岁近日,吴京拍电影时意外从马背上摔下一事引发热议,当时他头朝下摔在地上,被道具卡住无法翻身,好不容易才翻过身子来,好在有惊无险。不过,因工作意外去世的演员却并不少,其中值得一提的就有
日本诞生最高网速首次全球云上转播奥运会图灵周报图灵周报精选AI行业一周大事件,从良莠不齐的行业资讯中挑选出最有价值的信息,配上专业点评,值得你细读品味。01日本打破全球网速纪录近日,日本国家信息和通信技术研究所(NICT)的科
苏州韶风文化传媒乐抖派平台维权人退款历经波折9月19日,反传防骗联盟发布了打着抖音的旗号招商?苏州韶风文化传媒乐抖派平台涉嫌合同欺诈遭代理投诉!一文,曝光了苏州韶风文化传媒旗下的乐抖派平台以抖音官方为幌子进行虚假招商遭代理商
菜比肉贵!近期蔬菜的价格为何上涨?近日,全国多地菜价上涨。24号国内买一根黄瓜6元斤,生菜30元斤的消息冲上热搜。网友直呼去年吃不起肉,今年吃不起菜。猪价跌跌不休,菜价高攀不起现在你还会在市场上听到菠菜菠菜!贱卖,
这外观是从未来进的货吧,广汽埃安AIONY上市11月1日,广汽埃安AIONY迎来2022款焕新上市,共推出410km500km600km三个续航版本共计7款车型,补贴后的官方指导价为10。96万元15。76万元,将从2022年
未来真的要来了,5G牌照正式发放6月6日早上840消息,工信部在预告消息发布三天后,正式向三大运营商和广电颁发5G牌照。这也就意味着,相较于之前2020年5G商用表,中国的5G商用时间整整提速了一年,我国将成为自
而立之年迎来第四次转型,零售云成苏宁未来十年布局关键2020年对于苏宁易购来说,是意义非凡的一年,不仅迈进了三十而立之年,而且迎来了历史上第四次重大转型从线上线下融合的零售商向智慧零售服务商的转型,在这其中苏宁零售云无疑将发挥关键作
重磅文件突然下达!国家已正式确定,未来五年要在农村干这件事!刚刚,农业农村部印发了全国乡村产业发展规划(20202025年),对农业做出一系列重磅规划和展望。规划要求,到2025年农产品加工业的收入达到32万亿元,农林牧渔等产值达到1万亿元
该多久做次健康检查该多久做次健康检查美F何时该做健康检查,可能不同的人会有不同的观点,有的人认为做健康检查的次数越名越好,最好610个月检查一次有的人可能会认为34年做次就足够了。其实,这两种观点都