redis数据类型和应用场景

如题所述

第1个回答  2022-06-19
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 元素 (4294967295, 每个列表可存储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版本提供,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能.geo的数据类型为zset.

常用命令:geoadd,geopos, geodist

应用场景:附近位置、摇一摇

参考列表:
Redis五种数据类型及应用场景
相似回答