Redis数据类型和应用场景

Redis是目前最流行的NOSQL系统之一。它是用ANSI c语言编写的开源键值存储系统(不同于MySQL的二维表存储)。),Redis数据缓存在计算机内存中,它会定期将更新的数据写入磁盘或修改对附加记录文件的操作,以实现数据持久化。说到存储数据,必然会涉及到相关的数据类型。redis主要有以下数据类型:

描述:string是redis最基本的类型,你可以理解为和Memcached完全一样的类型,一个键对应一个值。值不仅是一个字符串,也是一个数字。字符串类型是二进制安全的。表示redis可以包含任何数据的字符串。如jpg图片或序列化对象。字符串类型是Redis最基本的数据类型,字符串类型的值最多可以存储512MB。

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

应用场景:指定键值缓存应用。总计数:喜欢,粉丝。

描述:hash是一个键值(key = & gt值)对集。Redihash是字符串类型的字段和值的映射表,hash特别适合存储对象。

常用命令:hget、hset、hgetall等。

应用场景:存储一些变动数据,比如商品信息。

描述:list list是一个简单的字符串列表,按插入顺序排序。您可以将元素添加到列表的头部(左侧)或尾部(右侧)。列表最多可以存储232-1个元素(4294967295,每个列表可以存储超过40亿个)。

常用命令:lpush(添加左侧元素)、rpush、lpop(移除左侧第一个元素)、rpop、lrange(获取列表片段、LRANGE键start stop)等。

应用场景:消息队列、关注列表、粉丝列表等。都可以通过Redis的列表结构来实现。

描述:set是string类型的无序集合。集合是通过hashtable实现的,概念基本类似于数学中的集合,可以相交、并、差等等。集合中的元素顺序不对。所以添加、删除和搜索的复杂度为O(1)。

常用命令:sadd、spop、sembers、sunion等。

应用场景:交集、并集、差集(在微博中,一个用户的所有关注者可以存放在一个集合中,所有粉丝可以存放在一个集合中。Redis还为集合提供了交、并、差集等运算,可以轻松实现* * *同关注、* *同偏好、二友等功能。对于上述所有集合操作,您还可以使用不同的命令来选择是将结果返回给客户端还是保存到新的集合中。)

描述:zset和set一样,是string类型元素的集合,不允许有重复的成员。不同的是,你可以评分(排序)

常用命令:zadd、zrange、zrem、zcard等。

应用场景:排行榜,加权消息队列。

说明:位图,一种“数据结构”,可以实现对位的操作。引用数据结构主要是因为:

Bitmaps本身不是一个数据结构,事实上它是一个字符串,但是它可以操纵字符串的位。

位图提供了一组独立的命令,所以在Redis中使用位图与使用字符串是不同的。位图可以被认为是一个以位为单位的数组。数组的每个单元格只能存储0和1,数组的下标在位图中称为offset。其实位图的大部分应用场景都可以通过其他数据类型来实现,位图主要是占用存储空间少。

常用命令:getbit键偏移量;;setbit键偏移值

应用场景:统计用户访问量,统计某一天电影播放量。

描述:Redis在2.8.9版本中增加了HyperLogLog结构。Redis HyperLogLog是一种基数统计算法。HyperLogLog的优点是,当输入元素的数量或体积非常大时,基数计算所需的空间总是固定的,非常小。在Redis中,每个HyperLogLog键只需要花费12 KB的内存来计算近2 ^ 64个不同元素的基数。这与计算基数时元素越多消耗内存越多的集合形成了鲜明的对比。但是由于HyperLogLog只根据输入元素计算基数,并不存储输入元素本身,所以HyperLogLog不能像集合一样返回输入元素。这种数据结构的基本思想是利用统计概率算法,以牺牲数据精度为代价,节省内存空间,提高相关操作的性能。

常用命令:pfadd、pfcount、pfmerge。

应用场景:统计网站日UV。

说明:Redis3.2中提供了geo功能,支持存储地理位置信息,实现附近定位、摇一摇等依赖于地理位置信息的功能。GEO的数据类型是zset。

常用命令:geoadd、geopos、geodist。

应用场景:附近位置,晃动

参考列表:

Redis五种数据类型和应用场景