我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis多种数据类型以及使用场景

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis多种数据类型以及使用场景

Redis多种数据类型以及使用场景

SDS简单动态字符串

struct sdshdr {

// 记录buf数组中已使用字节的数量

// 等于SDS所保存字符串的长度

int len;

// 记录buf数组中未使用字节的数量

int free;

// 字节数组,用于保存字符串

char buf[];

}

image

  • free表示这个SDS没有分配 未使用空间。

  • len表示SDS保存了无字节长的字符串。

  • buf是一个char数组。

SDS与C字符串区别

  1. O(1)复杂度获取字符串长度。

  2. 防止缓冲区溢出。

  3. 减少修改字符串时带来的内存重分配次数。

字符串

命令

set key value [ex seconds] [px milliseconds] [nx|xx]

内部编码

字符串类型的内部编码有3种:

  • int:8个字节长整型。

  • embstr:小于等于39个字节的字符串。

  • raw:大于39个字节的字符串。

Redis会根据当前值的类型和长度决定使用哪种内部编码实现。

整数:

set key 8653

ok

object encoding key

"int"

短字符:

set key "hello"

ok

object encoding key

"embstr"

长字符:

set key "40 bytes"

ok

object encoding key

"raw"

使用场景

  1. 缓存

  2. 计数

  3. Session集中管理

  4. 限速

哈希

命令

hset key field value

hset uset:1 name tom

hget key field

hget uset:1 name

"tom"

内部编码

  • ziplist(压缩列表):哈希类型元素个数小于hash-max-ziplist-entries默认512个、同时所有值都小于hash-max-

ziplist-value配置时,Redis会使用ziplist实现,节省内存方面比hashtable优秀。

  • hashtable:哈希类型无法满足ziplist条件时,会用这个,hashtable的读写时间复杂度都是O(1)。

hset hashkey f3 "bigger than 64 bytes"

object encoding hashkey

"hashtable"

hmset hashkey f1 v1 f2 v2 f3 v3 ...... f513 v513

object encoding hashkey

"hashtable"

列表

从右边插入元素:rpush key value

lrange listkey 0 -1

从左边插入元素:lpush key value

linsert key before | after pivot value

查找:lrange key start end

删除:lpop key

内部编码

  • ziplist:元素个数小于list-max-ziplist-entries,同时每个值都小于list-max-ziplist-value,Redis选用压缩列表减少内存。

  • linkedlist:无法满足ziplist就会用链表来实现。

使用场景

  1. 消息队列

  2. 文章列表

集合

用来保存多个的字符串元素,不允许重复元素,无序。

sadd key a b c 添加key

3

srem key a b 删除key

2

scard key 计算key

1

smembers key 获取所有元素

sinter key 求交集

suinon key 求并集

sdiff key 求差集

内部编码

  • intset(整数集合)

  • hashtable

使用场景

标签(tag)

给用户添加标签

sadd user:1:tags tag1 tag2 tag3

sadd uset:1:tags tag1 tag2 tag3

给标签添加用户

sadd tag1:users user:1 user:3

sadd tag2:users user:1 user:2

计算用户共同感兴趣的标签

sinter user:1:tag2 user:2:tag

有序集合

不能重复,可以排序的set,给每个元素设置了一个score作为排序的依据。

列表、集合和有序集合三者异同点

image

命令

zadd key score member 添加成员

zadd user:ranking 251 tom

有序集合提供排序字段,产生代价,zadd复杂度为Ologn,sadd为O1。

zcard user:ranking 计算成员数

zscore key member 返回某个成员分数

zrank key member 计算成员的排名

zrem key member 删除成员

zrange ...

集合间的操作

(1)交集

(2)并集

内部编码

  • 压缩列表

  • 跳跃表

使用场景

添加用户赞数:

zadd user:ranking:2016_03_15 mike 3

获得赞后:

zincrby user:ranking:2016_03_15 mike 1

取消赞:

zrem

获取赞数最多的十个用户:

zrevrangebyrank user:ranking:2016_0315 0 9

展示用户信息以及用户分数:

此功能将用户名作为键后缀,将用户信息保存在哈希类型中,至于用户的分数和排名可以使用zscore和zrank

hgetall user:info:tom

zscore user:ranking:2016_03_15 mike

zrank user:ranking:2016_03_15 mike

待更新:

Bitmaps

HyperLogLog

GEO

Reference

《Redis设计与实现》

《Redis开发与运维》

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis多种数据类型以及使用场景

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis多种数据类型以及使用场景

SDS简单动态字符串struct sdshdr {// 记录buf数组中已使用字节的数量// 等于SDS所保存字符串的长度int len;// 记录buf数组中未使用字节的数量int free;// 字节数组,用于保存字符串char buf[];}free表示
Redis多种数据类型以及使用场景
2014-11-22

redis的五种数据类型及使用场景有哪些

redis 支持五种数据类型:字符串、列表、哈希表、有序集合和无序集合。这些类型分别适合存储各种数据场景,例如文本数据、有序元素列表、映射键值数据、按分数排序的元素集合以及独特的元素集合。Redis 五种数据类型及使用场景Redis 是一
redis的五种数据类型及使用场景有哪些
2024-04-08

redis的五种数据类型及使用场景是什么

redis 提供了五种数据类型,分别为:字符串:存储文本、json 数据、缓存、计数器;哈希:存储用户数据、会话信息、对象属性;列表:存储队列、时间线、排名、购物车;集合:存储标签、分类、关注列表、黑名单;有序集合:存储排行榜、投票、优先级
redis的五种数据类型及使用场景是什么
2024-04-08

redis的五种数据类型使用在什么场景

redis 提供五种基本数据类型,分别适用于以下场景:字符串:缓存查询结果、计数器、队列。列表:待办事项列表、购物车,fifo/lifo 队列。集合:关注者、标签,集合操作。哈希表:对象信息、用户配置文件、购物车内容。有序集合:排行榜、任务
redis的五种数据类型使用在什么场景
2024-04-19

redis五种数据结构及使用场景

redis 提供五种数据结构:字符串(存储简单数据)、哈希表(存储对象数据)、列表(存储消息队列)、集合(存储不重复元素)和有序集合(按评分存储排序元素)。Redis 的五种数据结构及使用场景Redis 是一种流行的键值存储数据库,它支持
redis五种数据结构及使用场景
2024-04-19

Oracle数据类型详解及应用场景

Oracle数据类型详解及应用场景Oracle数据库作为一款领先的关系型数据库管理系统,在数据存储方面提供了多种不同的数据类型,以满足不同数据的需求。本文将介绍Oracle数据库中常用的数据类型,以及它们的应用场景,并提供具体的代码示例。
Oracle数据类型详解及应用场景
2024-03-07

Redis 的基本数据类型 和 基础应用场景

1. 获取中奖用户ID,随机弹出之后集合中就不存在了【set】2. 存储活动中中奖的用户ID,保证同一个用户不会中奖两次【set】3. 存储粉丝列表,value 为粉丝的用户ID,score 是关注时间【zset】4. 存储学生成绩,value 为学生的ID,
Redis 的基本数据类型 和 基础应用场景
2018-08-10

Redis 中ZSET数据类型命令使用及对应场景总结(案例详解)

目录1.zadd添加元素2.zrem 从有序集合key中删除元素3.zscore 返回有序集合key中元素member的分值4.zincrby 为有序集合key中元素增加分值5.zcard获取有序集合key中元素总个数6.zrange 正序
2023-01-03

Redis 中ZSET数据类型命令使用及对应场景总结(案例详解)

这篇文章主要介绍了Redis 中ZSET数据类型命令使用及对应场景总结,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-01-03

什么是redis数据库,及其使用场景

redis 是一种开源键值存储数据库,通过将数据存储在内存中提供极高的性能。它支持多种数据结构,例如字符串、哈希表、链表和集合。redis 的应用场景广泛,包括缓存、会话管理、消息传递、限制速率、排行榜、数据缓存、队列管理、数据聚合和身份验
什么是redis数据库,及其使用场景
2024-04-19

CSS的多种背景及使用场景和技巧

这篇文章主要介绍CSS的多种背景及使用场景和技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!CSS background是最常用的CSS属性之一。然而,并不是所有开发人员都知道使用多种背景。这段时间都在关注使用多种
2023-06-08

Redis的五种基本类型和业务场景和使用方式

目录Redis是什么?Redis的特点依赖配置redis的配置类(用于格式转换,处理乱码)String(字符串)特点业务场景代码使用案例List(列表)特点业务场景代码使用案例Set(集合)特点业务场景代码使用案例Hash(哈希表)特点业务
Redis的五种基本类型和业务场景和使用方式
2024-10-17

编程热搜

目录