当前位置:   article > 正文

redis五种数据类型的实现方式,常用命令,应用场景_redies实现的五中方法

redies实现的五中方法

String类

​ 可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512M

​ 实现方式:
一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。

​ 常用命令:

set key value :设置key对应的string类型值。
get key :获取key对于的string类型值。
  • 1
  • 2

使用场景:
​用户登录天数, 博客访问次数、网站访问量

List类型

​ list数据类型指key对应的value是一个双向链表结构。注意:一个列表最多可以包含 232 - 1 个元素

实现方式:

​ 双向链表

​ 常用命令:

1.lpush key value :向key对应list头部添加一个字符串元素。 

​		2.rpush key value :向key对应list尾部添加一个字符串元素。 

​		3.lrange key start end :返回指定区间内(start~end)的元素。下标从0开始。支持负数。 

​		4.lpop key :从list头部返回一个元素,并删除此元素。

​		5.rpop key :从list头部返回一个元素,并删除此元素。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

使用场景:

​ 微博中我的粉丝列表,关注列表

Hash类型

​ hash 是一个 string 类型的 field 和 value 的映射表,适合用于存储对象。

​ 实现方式:

​ Hash的成员比较少时,采用类似一维数组的方式来紧凑存储,不会采用HashMap结构,此时encoding为 zipmap,成员数量增大时会自动转成HashMap,此时encoding为ht

​ 常用命令:

​		hset key field value :设置key对应的hash对象中指定域的值。 

​		hget key field :返回key对应的hash对象中指定域的值。

​		hdel key field [field ...]: 删除

​		hlen key:计算field个数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

​ 适用场景:

​ 1.存储用户信息
2.原生string:直观,占用键多
​ 3.序列化字符串:序列化后好操作,每次都需要反序列化和序列化所有字段
​ 4.哈希类型:简单直观,减少内存空间的使用

Set类型

​ 一种无序的不重复的集合

​ 实现方式:

​ hashmap, 通过计算hash的方式来快速排重

​ 常用命令:

		sadd key member :添加一个元素到key对于的set集合中。 

​		sismember key member :判断member是否在set中。 

​		smembers key :返回所以key对于的set元素。

​		srem key element [element ...]:  删除元素

​		scard key:计算元素个数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

应用场景:

​ 抽奖,推荐系统,好友

Sorted Set(zset)

​ 是一个有序的不重复的集合,集合的成员从大到小排序,并且每个元素都会关联一个double类型的分数,成员是唯一,但是分数可以不唯一

​ 实现方式:

​ 使用HashMap和跳跃表(SkipList)来保证数据的存储和有序

​ 常用命令:

	zadd key score member: 添加成员

​	zcard key:计算成员个数

​	zscore key member: 计算某个成员的分数

​	zrank key member: 计算成员的排名,分数从低到高

​	zrevrank key member: 计算成员的排名,分数从高到低

​	zrem key member: 删除成员

​	zincrby key increment member: 增加成员的分数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

​ 使用场景:

​ 排行榜,分页(动态分页)

如果大家对java架构相关感兴趣,可以关注下面公众号,会持续更新java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达, 超神之路从此展开, BTAJ不再是梦想!

架构殿堂

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/388185
推荐阅读
相关标签
  

闽ICP备14008679号