发布信息

redis支持的数据结构有哪些 redis与mc的区别 (redis支持的五种数据类型)

     2024-10-22 21:28:33     914

本文目录导航:

redis与mc的区别,redis支持的数据结构有哪些

1、redis是非相关型内存数据库,memcached仅仅是内存键值缓存2、redis数据类型丰盛,有五种:string(字符串),list(链表),hash(字典),set(汇合),zset(有序汇合);mc仅仅支持字符串3、丰盛的数据类型选择了redis的经常使用愈加繁复、易懂、易保养;以及成功丰盛的运行,对比实时排行,购置介绍等

5种数据类型

redis支持的数据结构有哪些

Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(汇合)及zset(sorted set:有序汇合)。

① 简介:String是Redis最基础的数据结构类型,它是二进制安保的,可以存储数字,图片或许序列化的对象,值最大存储为512M 繁难经常使用举例: set key value、get key等 运行场景:共享session、散布式锁,计数器、限流。

② 哈希类型是指v(值)自身又是一个键值对(k-v)结构 繁难经常使用举例:hset key field value 、hget key field 外部编码:ziplist(紧缩列表) 、hashtable(哈希表) 运行场景:缓存用户信息等。

③ Redis list 列表是繁难的字符串列表,依照拔出顺序排序。

你可以参与一个元素到列表的头部(左边)或许尾部(左边)。

底层双向链表,可以经过push和pop操作从列表的头部或许尾部参与或许删除元素,这样List即可以作为栈,也可以作为队列 lpush+lpop=Stack(栈) lpush+rpop=Queue(队列) ④ Redis set是string类型的无序汇合。

不蕴含重复元素 ⑤ Redis zset 和 set 一样也是string类型元素的汇合,且不准许重复的成员。

但sorted set可以经过用户额外提供一个优先级(score)的参数来为成员排序,并且是拔出有序的,即智能排序。

Redis sorted set的外部经常使用ziplist或跳表,跳表组合了skiplist和hash,HashMap里放的是成员到score的映射,而跳表里寄存的是一切的成员, 跳表就是在链表的基础上,参与多级索引优化查找效率。

跳表支持平均 O(logN),最坏 O(N)复杂度的节点查找,还可以经过顺序性操作批量解决节点。

redis数据类型和运行场景

Redis是以后比拟抢手的NOSQL系统之一,它是一个开源的经常使用ANSI c言语编写的key-value存储系统(区别于MySQL的二维表格的方式存储。

),Redis数据都是缓存在计算机内存中并且它会周期性的把降级的数据写入磁盘或许把修正操作写入追加的记载文件,成功数据的耐久化。

谈到存储数据,那么肯定要触及到相关的数据类型,redis重要有以下数据类型: 形容:string 是 redis 最基本的类型,你可以了解成与 Memcached 如出一辙的类型,一个 key 对应一个 value。

value其实不只是String,也可以是数字。

string 类型是二进制安保的。

意思是 redis 的 string 可以蕴含任何数据。

比如jpg图片或许序列化的对象。

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

罕用命令:get、set、incr、decr、mget等。

运行场景:规key-value缓存运行。

惯例计数: 点赞数, 粉丝数。

形容: hash 是一个键值(key => value)对汇合。

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

罕用命令:hget,hset,hgetall 等。

运行场景:存储局部变卦数据,如商品信息等。

形容:list 列表是繁难的字符串列表,依照拔出顺序排序。

你可以参与一个元素到列表的头部(左边)或许尾部(左边)。

列表最多可存储 232 - 1 元素 (, 每个列表可存储40多亿)。

罕用命令:lpush(参与左边元素),rpush,lpop(移除左边第一个元素),rpop,lrange(失掉列表片段,LRANGE key start stop)等。

运行场景:信息队列,关注列表,粉丝列表等都可以用Redis的list结构来成功。

形容: set是string类型的无序汇合。

汇合是经过hashtable成功的,概念和数学中个的汇合基本相似,可以交加,并集,差集等等,set中的元素是没有顺序的。

所以参与,删除,查找的复杂度都是O(1)。

罕用命令:sadd,spop,smembers,sunion 等。

运行场景:交加,并集,差集(微博中,可以将一个用户一切的关注人存在一个汇合中,将其一切粉丝存在一个汇合。

Redis还为汇合提供了求交加、并集、差集等操作,可以十分繁难的成功如独特关注、独特喜好、二度朋友等配置,对下面的一切汇合操作,你还可以经常使用不同的命令选用将结果前往给客户端还是存集到一个新的汇合中) 形容:zset 和 set 一样也是string类型元素的汇合,且不准许重复的成员。

不同是可以打分(排序) 罕用命令:zadd,zrange,zrem,zcard等 运行场景:排行榜,带权重的信息队列 形容:Bitmaps这个“数据结构”可以成功对位的操作。

把数据结构加上引号重要由于: Bitmaps自身不是一种数据结构, 实践上它就是字符串 , 然而它可以对字符串的位启动操作。

Bitmaps独自提供了一套命令, 所以在Redis中经常使用Bitmaps和经常使用字符串的方法不太相反。

可以把Bitmaps构想成一个以位为单位的数组, 数组的每个单元只能存储0和1, 数组的下标在Bitmaps中叫做偏移量。

其实大少数Bitmaps的运行场景可以用其余数据类型来成功,用Bitmaps重要是存储空间占用特意少 罕用命令:getbit key offset;setbit key offset value 运行场景:统计用户访问,统计电影某天的的播放量 形容:Redis 在 2.8.9 版本参与了 HyperLogLog 结构。

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的好处是,在输入元素的数量或许体积十分十分大时,计算基数所需的空间总是固定 的、并且是很小的。

在 Redis 外面,每个 HyperLogLog 键只有要破费 12 KB 内存,就可以计算凑近 2^64 个不同元素的基 数。

这和计算基数时,元素越多消耗内存就越多的汇合构成显明对比。

然而,由于 HyperLogLog 只会依据输入元历来计算基数,而不会贮存输入元素自身,所以 HyperLogLog 不能像汇合那样,前往输入的各个元素。

这类数据结构的基本大的思绪就是经常使用统计概率上的算法,就义数据的精准性来节俭内存的占用空间及优化相关操作的性能 罕用命令:pfadd, pfcount,pfmerge 运行场景:统计网站的每日UV 形容:GEO配置在Redis3.2版本提供,支持存储天文位置信息用来成功诸如左近位置、摇一摇这类依赖于天文位置信息的配置的数据类型为zset. 罕用命令:geoadd,geopos, geodist 运行场景:左近位置、摇一摇 参考列表:Redis五种数据类型及运行场景

相关内容 查看全部