Redis常用的五大数据类型

目录

简介

String(字符串)

应用场景:

Hash(哈希)

使用场景:

List(列表)

应用场景:

Set(集合)

使用场景:

zset(sorted set:有序集合)

使用场景:


简介

        Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储,它还支持数据的备份,即master-slave模式的数据备份,同样Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

        Redis支持的五大数据类型包括String(字符串 用法: 键 值),Hash(哈希 类似Java中的 map 用法: 键 键值对),List(列表 用法:键 集合 不可以重复),Set(集合 用法:键 集合 可以重复),Zset(sorted set 有序集合 用法: 键 值 值)

       安装参考Docker安装Redis

String(字符串)

        string 是 redis 最基本的类型,一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB

应用场景:

        String是最常用的一种数据类型,普通的key/value存储都可以归为此类,value其实不仅是String,也可以是数字:比如想知道什么时候封锁一个IP地址(访问超过几次)。

Hash(哈希)

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

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

使用场景:

        存储、读取、修改用户属性

        我们简单举个实例来描述下Hash的应用场景,比如我们要存储一个用户信息对象数据,包含以下信息: 用户ID,为查找的key,

        存储的value用户对象包含姓名name,年龄age,生日birthday 等信息, 如果用普通的key/value结构来存储,主要有以下2种存储方式:

        第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,

        如:set u001 "李三,18,20010101"

        这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题。

        第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,

        如:mset user:001:name "李三 "user:001:age18 user:001:birthday "20010101" 虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的。

        那么Redis提供的Hash很好的解决了这个问题。

List(列表)

        Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

应用场景:

        Redis list的应用场景非常多,也是Redis最重要的数据结构之一。

        我们可以轻松地实现最新消息排行等功能。

        Lists的另一个应用就是消息队列,可以利用Lists的PUSH操作,将任务存在Lists中,然后工作线程再用POP操作将任务取出进行执行。

Set(集合)

        Redis的Set是string类型的无序集合。

使用场景:

        1.共同好友、二度好友

        2. 利用唯一性,可以统计访问网站的所有独立 IP

        Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。

        比如在微博应用中,每个人的好友存在一个集合(set)中,这样求两个人的共同好友的操作,可能就只需要用求交集命令即可。

        Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实

实现方式:

        set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。

zset(sorted set:有序集合)

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

使用场景:

1.带有权重的元素,比如一个游戏的用户得分排行榜

2.比较复杂的数据结构,一般用到的场景不算太多

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Redis 支持以下 5 种主要的数据类型: 1. 字符串(String):是最基本的数据类型,字符串类型的值最大可以达到512MB。字符串类型是二进制安全的,也就是说Redis的字符串可以包含任何数据,比如jpg图片或者序列化的对象。字符串类型支持一些特殊的操作,比如append(追加),incr(加一)等等。 2. 哈希表(Hash):是一个string类型的field和value的映射表,哈希表非常适合存储对象,比如用户信息等。相比将每个字段存储为单个字符串类型,使用哈希表存储可以更加高效。 3. 列表(List):是一个链表结构,其中每个节点都包含一个字符串类型的值。因为列表是一个链表,所以对列表的访问操作必须是顺序的,不支持随机访问。列表类型支持一些特殊的操作,比如lpush(从左边插入),rpop(从右边弹出)等等。 4. 集合(Set):是一组无序的字符串类型元素的集合,每个元素都是独一无二的,集合类型支持一些特殊的操作,比如sadd(添加元素),srem(删除元素)等等。 5. 有序集合(Sorted Set):和集合类似,是一组无序的字符串类型元素的集合,每个元素都是独一无二的。不同的是,有序集合中每个元素都会关联一个权重(score),通过权重可以进行元素排序。有序集合类型支持一些特殊的操作,比如zadd(添加元素),zrange(按权重范围获取元素)等等。 ### 回答2: Redis 常用数据类型有以下几种: 1. 字符串(String):Redis 最基本的数据类型,可以存储任意类型的字符串,它们的最大长度为 512MB。 2. 哈希(Hash):Redis 哈希是一个键值对集合,每个哈希可以存储多个键值对,适合存储对象或者将一个对象的不同属性存储到同一个哈希中。 3. 列表(List):Redis 列表是一个有序的字符串列表,可以按照插入顺序添加或删除元素。列表是一个链表,因此头尾操作的时间复杂度为 O(1),适合用来实现队列和栈。 4. 集合(Set):Redis 集合是一个无序且唯一的字符串集合,可以用于存储不重复的元素。集合提供了非常快速的添加、删除和判断元素是否存在的操作。 5. 有序集合(Sorted Set):Redis 有序集合是一个有序的字符串集合,每个元素都关联了一个分数,根据分数进行排序。有序集合的元素必须是唯一的,但是分数可以重复。 除了以上五种常用数据类型之外,Redis 还提供了以下几种数据类型的扩展: 6. Bitmaps:用于位操作,存储和处理二进制位的数据结构。 7. HyperLogLog:适用于统计大数据量的唯一流的基数问题。 8. GEO(地理位置):存储地理位置信息的数据结构,可以进行附近的位置搜索。 每种数据类型都有各自特定的操作指令,可以通过这些指令来对数据进行增删改查操作。这些数据类型的灵活性和高效性使得 Redis 在缓存、队列、计数器等场景中有着广泛的应用。 ### 回答3: Redis是一款开源的内存数据库,以键值对的形式存储数据。Redis支持多种数据类型,包括字符串、列表、哈希、集合和有序集合。 1. 字符串: 字符串是Redis最简单的数据类型,可以存储字符串、整数或浮点数。它可以执行一些针对字符串的命令,如设置值、获取值、对值进行增减操作等。 2. 列表: 列表是一个有序的字符串集合,可以在头部或尾部插入或删除元素,支持重复的元素。可以执行一系列类似于栈或队列的操作,如左/右插入、左/右弹出、获取列表长度等。 3. 哈希: 哈希是一个键值对的集合,其中的键和值都是字符串类型。可以对哈希进行添加、删除、获取指定键值的操作,还可以获取哈希的所有键或所有值。 4. 集合: 集合是一个无序、唯一的字符串集合,不允许重复元素。可以对集合进行添加、删除、判断元素是否存在等操作,还可以取交集、并集、差集等。 5. 有序集合: 有序集合和集合类似,但每个元素都会关联一个分数,可以根据分数对元素进行排序。可以对有序集合进行添加、删除、获取指定分数范围的元素等操作。 总结: Redis提供了多种数据类型,每种数据类型在不同场景下都有独特的用途。字符串适用于存储单个值,列表适用于操作有序的元素集合,哈希适用于存储多个键值对,集合适用于存储无序的唯一元素集合,有序集合适用于关联排序的元素集合。根据具体的需求情况,可以选择合适的数据类型存储和操作数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值