问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

redis的五种数据类型是什么?

发布网友 发布时间:2022-04-24 16:11

我来回答

2个回答

懂视网 时间:2022-04-28 12:45

  • sismember 指令判断该 key 对应的 set 数据结构中,是否存在某个元素,如果存在返回 1,否则返回 0;

  • sdiff 指令来对多个 set 集合执行差集;

  • sinter 指令对多个集合执行交集;

  • sunion 指令对多个集合执行并集;

  • spop 指令弹出一个随机元素;

  • srandmember 指令返回一个或多个随机元素。

  • 在社交系统中,可以用于存储关注的好友列表,用来判断是否关注,还可以用来做好友推荐使用。另外,还可以利用 set 的唯一性,来对服务的来源业务、来源 IP 进行精确统计。

    sorted set 有序集合

    有序集合中,每个元素都会关联一个 double 类型的 score 分数值。有序集合通过这个 score 值进行由小到大的排序。有序集合中,元素不允许重复,但 score 分数值却允许重复。

    操作

  • zscan 指令:按顺序获取有序集合中的元素;

  • zscore 指令:获取元素的 score 值;

  • zrange指令:通过指定 score 返回指定 score 范围内的元素;

  • 在某个元素的 score 值发生变更时,还可以通过 zincrby 指令对该元素的 score 值进行加减。

  • 通过 zinterstore、zunionstore 指令对多个有序集合进行取交集和并集,然后将新的有序集合存到一个新的 key 中,如果有重复元素,重复元素的 score 进行相加,然后作为新集合中该元素的 score 值。

  • 可以用有序集合来统计排行榜,实时刷新榜单,还可以用来记录学生成绩,从而轻松获取某个成绩范围内的学生名单,还可以用来对系统统计增加权重值,从而在 dashboard 实时展示。

    hash 哈希

    bitmap

    位图是一串连续的二进制数字,底层实际是基于 string 进行封装存储的

    按 bit 位进行指令操作的。bitmap 中每一 bit 位所在的位置就是 offset 偏移,可以用 setbit、bitfield 对 bitmap 中每个 bit 进行置 0 或置 1 操作,也可以用 bitcount 来统计 bitmap 中的被置 1 的 bit 数,还可以用 bitop 来对多个 bitmap 进行求与、或、异或等操作。

    Redis 笔记

    bitmap 位图的特点是按位设置、求与、求或等操作很高效,而且存储成本非常低,用来存对象标签属性的话,一个 bit 即可存一个标签。可以用 bitmap,存用户最近 N 天的登录情况,每天用 1 bit,登录则置 1。

    个性推荐在社交应用中非常重要,可以对新闻、feed 设置一系列标签,如军事、娱乐、视频、图片、文字等,用 bitmap 来存储这些标签,在对应标签 bit 位上置 1。对用户,也可以采用类似方式,记录用户的多种属性,并可以很方便的根据标签来进行多维度统计。bitmap 位图的重要指令包括:setbit、 getbit、bitcount、bitfield、 bitop、bitpos 等。

    使用经历

    统计用户登录情况 : 1 2 3 5 天内登录
    bitmap : 1 1 1 0 1

    GEO 地理位置

    在存储某个位置点时,首先利用 Geohash 算法,将该位置二维的经纬度,映射编码成一维的 52 位整数值,将位置名称、经纬度编码 score 作为键值对,存储到分类 key 对应的 sorted set 中。

    需要计算某个位置点 A 附近的人时,首先以指定位置 A 为中心点,以距离作为半径,算出 GEO 哈希 8 个方位的范围, 然后依次轮询方位范围内的所有位置点,只要这些位置点到中心位置 A 的距离在要求距离范围内,就是目标位置点。轮询完所有范围内的位置点后,重新排序即得到位置点 A 附近的所有目标。

    使用 geoadd,将位置名称(如人、车辆、店名)与对应的地理位置信息添加到指定的位置分类 key 中;

    使用 geopos 方便地查询某个名称所在的位置信息;

    使用 georadius 获取指定位置附近,不超过指定距离的所有元素;

    Redis GEO 地理位置,利用 Geohash 将大量的二维经纬度转一维的整数值,这样可以方便的对地理位置进行查询、距离测量、范围搜索。但由于地理位置点非常多,一个地理分类 key 下可能会有大量元素,在 GEO 设计时,需要提前进行规划,避免单 key 过度膨胀。

    Redis 的 GEO 地理位置数据结构,应用场景很多,比如查询某个地方的具体位置,查当前位置到目的地的距离,查附近的人、餐厅、电影院等。GEO 地理位置数据结构中,重要指令包括 geoadd、geopos、geodist、georadius、georadiusbymember 等。

    使用 geodist 来获取指定的两个位置之间的距离。

    hyperLogLog 基数统计

    hyperLogLog 是用来做基数统计的数据类型,当输入巨大数量的元素做统计时,只需要很小的内存即可完成。HyperLogLog 不保存元数据,只记录待统计元素的估算数量,这个估算数量是一个带有 0.81% 标准差的近似值,在大多数业务场景,对海量数据,不足 1% 的误差是可以接受的。

    Redis 的 HyperLogLog 在统计时,如果计数数量不大,采用稀疏矩阵存储,随着计数的增加,稀疏矩阵占用的空间也会逐渐增加,当超过阀值后,则改为稠密矩阵,稠密矩阵占用的空间是固定的,约为12KB字节。

    通过 hyperLoglog 数据类型,你可以利用 pfadd 向基数统计中增加新的元素,可以用 pfcount 获得 hyperLogLog 结构中存储的近似基数数量,还可以用 hypermerge 将多个 hyperLogLog 合并为一个 hyperLogLog 结构,从而可以方便的获取合并后的基数数量。

    hyperLogLog 的特点是统计过程不记录独立元素,占用内存非常少,非常适合统计海量数据。在大中型系统中,统计每日、每月的 UV 即独立访客数,或者统计海量用户搜索的独立词条数,都可以用 hyperLogLog 数据类型来进行处理。

    相关学习推荐:Laravel

    热心网友 时间:2022-04-28 09:53

    如下:

    一、string

    string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

    string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

    string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

    命令: SET 和 GET 命令。

    二、hash 

    Redis hash 是一个键值(key=>value)对集合。

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

    HMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value。

    三、list

    列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
    列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

    lpush 设置值,lrange取值。

    四、set

    redis的set是string的无序集合。集合通过哈希表实现。

    添加一个string元素到key对应的set集合中,用 sadd命令。返回1表示成功,0表示在集合中已存在,返回错误表示key对应的set不存在。

    查看用smembers 命令。

    集合内元素的唯一性,第二次插入的元素将被忽略。

    集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

    五、zset 

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

    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

    添加元素到集合,元素在集合中存在则更新对应score:zadd key score member。

    Redis数据模型:

    Redis的外围由一个键、值映射的字典构成。与其他非关系型数据库主要不同在于:Redis中值的类型不仅限于字符串,还支持如下抽象数据类型:

    1、字符串列表。

    2、无序不重复的字符串集合。

    3、有序不重复的字符串集合。

    4、键、值都为字符串的哈希表。

    值的类型决定了值本身支持的操作。Redis支持不同无序、有序的列表,无序、有序的集合间的交集、并集等高级服务器端原子操作。

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    蓝藻是植物吗 养殖蓝藻的方法 一建压题机构哪个好 一级建造师押题准吗?哪家机构押题准点? 千千静听怎么保存不了LRC歌词文件啦? 太平猴魁保质期有多久(太平猴魁茶保质期多长时间) 绿茶太平猴魁茶叶保质期是多长时间 太平猴魁茶叶有保质期吗 会计专业毕业后是什么学位 会计专业什么学士 会计毕业什么学士学位 厨柜门用UV板好还是烤漆板好 橱柜门板用烤漆的好还是亚克力的好 烤漆板__木_粒的_比 什么是烤漆板 橱柜的烤漆板和吸塑板有什么区别啊 什么是烤漆门板?有什么特点? 烤漆板与吸塑板有什么区别? 实木烤漆板和生态板的区别是什么? UV门板与烤漆门板有什么区别? 实木烤漆板和烤漆板有什么区别 家里装修想用白色烤漆板,白色烤漆板的特性是什么? 买家具,是免漆板的好,还是烤漆的好呀? 什么是烤漆板?烤漆板有什么优缺点?该如何选购和保养 西瓜怎么吃最甜 想要提高西瓜甜度,应该怎么做呢? 西瓜能做什么甜品 夏天,用西瓜做什么甜品? 西瓜可以做什么甜品?? FS.里面SF,SG, PG,无限A怎么用? SF58-ASEMI快恢复二极管的发展有什么意义? 如何查看redis最近使用的命令 怎样查看redis使用配置文件 能够用qq登录的软件有哪些? Redis 都有哪些应用场景? 能登陆qq的软件,除了qq软件还有哪些? Redis是什么,用来做什么 除了腾讯QQ软件,还能用什么软件登陆QQ啊! 所有软件都可以用QQ登录吗? redis怎么用?前景如何? 为什么其他软件都可以用qq登录 为什么要使用Redis QQ国际版可以用来登录其他软件么? Redis目前在绝大多数的项目中扮演怎样的角色 沧州的特产有哪些? 沧州有什么特色 好吃的东西吗 凉拌土豆丝好吃吗? 沧州有什么好吃好玩的呀? 凉拌土豆丝最正宗的做法 凉拌土豆丝都哪些家常做法?可以放芥末吗? 怎么在设置的文本框里打字