分布式缓存Redis6常见数据结构+指令

  • 分布式缓存Redis6常见数据结构+指令
  • 1.Redis6常见数据结构概览
  • 2.Redis6数据结构之String类型介绍和应用场景
  • 数据结构介绍
  • 3.Redis6数据结构之List类型介绍和应用场景
  • 数据结构介绍:
  • 4.Redis6数据结构之Hash类型介绍和应用场景
  • 数据结构介绍:
  • 5.Redis6数据结构之Set类型介绍和应用场景
  • 数据结构介绍:
  • 6.Redis6数据结构之Sorted Set类型介绍和应用场景
  • 数据结构介绍:


分布式缓存Redis6常见数据结构+指令

1.Redis6常见数据结构概览

  • String
  • List
  • Hash
  • Set
  • Sorted Set
  • 通用命令

redis6跟4哪个好 redis 6_redis

2.Redis6数据结构之String类型介绍和应用场景

数据结构介绍

  • 应用场景:
  • 验证码、计数器、订单重复提交、用户登录信息、商品详情
  • 常用命令:
  • set/get/increment/decrement/del

命令

输入方式

功能

set/get

set key value

设置和获取 key-value1

mset/mget

mset key value [key value…]

批量设置或获取多个key值

incr

incr key

incr对key对应的值进行加1操作,并返回新的值

incrby

incrby key increment

将key对应的数字加increment。如果key不存在,操作之前,key就会被置为0

setex

SETEX key seconds value

设置key对应字符串value,并且设置key在给定的seconds时间之后超时过期,原子操作

setnx

SETNX key value

将key设置值为value,如果key不存在等同SET命令。 当key存在时什么也不做, 是set if not exists的简写。

getset

GETSET KEY_NAME VALUE

设置key的值,并返回key旧的值

  • 注意
  • 值的长度不能超过512 MB
  • key命名规范,不要过长,冒号分割,业务名:表名:ID

3.Redis6数据结构之List类型介绍和应用场景

数据结构介绍:

  • 双向链表
  • 双向链表,插⼊删除时间复杂度O(1)快,查找为O(n)慢
  • 应用场景
  • 简单队列、最新商品列表、评论列表、非实时排行榜:定时计算榜,如手机日销榜

命令

输入方式

功能

lpush

LPUSH key value1 [value2]

将一个或多个值插入到列表头部

rpop

RPOP key

移除并获取列表最后一个元素

llen

incr key

获取列表长度

lindex

LINDEX key index

通过索引获取列表中的元素

lrange

LRANGE key start stop

获取key对应的list的指定下标范围的元素, 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素, -1表示获取所有元素( lrange key 0 -1);

rpush

RPUSH key value1 [value2]

在key对应的list的尾部添加一个元素

lpop

LPOP key

从key对应的list的尾部删除一个元素,并返回该元素

brpop

BRPOP LIST1 LIST2 … LISTN TIMEOUT

移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

lrem

LREM KEY COUNT VALUE

移除元素,可以指定移除个数

  • 注意
  • 通常添加到一个元素到列表的头部(左边)或者尾部(右边)
  • 存储的都是String字符串类型
  • 支持分页操作,在高并发项目中,第一页数据都说来源list,第二页和更多信息则是通过数据库加载
  • 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表不超过40亿个元素)

4.Redis6数据结构之Hash类型介绍和应用场景

数据结构介绍:

  • 是一个String类型的field和value的映射表,Hash特别适合用于对象储存
  • 应用场景
  • 购物车
  • 用户个人信息
  • 商品详情

命令

输入方式

功能

hset

HSET key field value

设置 key 指定的哈希集中指定字段的值

hget

HGET key Field

返回 key 指定的哈希集中该字段所关联的值

hgetall

HGETALL key

返回 key 指定的哈希集中所有的字段和值

hdel

HDEL key field [field …]

从 key 指定的哈希集中移除指定的域

hexists

HEXISTS key field

返回hash里面field是否存在

hincrby

HINCRBY key field increment

增加 key 指定的哈希集中指定字段的数值, 如果是-1 则是递减

hmset

HMSET key field value [field value …]

设置 key 指定的哈希集中指定字段的值

hmget

HMGET key field [field …]

返回 key 指定的哈希集中指定字段的值

  • 每个Hash可以存储232-1键值对(40多亿)

5.Redis6数据结构之Set类型介绍和应用场景

数据结构介绍:

  • 将一个或多个成员元素加入到集合中,已经存在于集合的元素将会被忽略
  • 应用场景
  • 去重
  • 社交应用关注、粉丝、共同好友
  • 统计网站的PV、UV、IP
  • 大数据里面的用户画像标签集合

命令

输入方式

功能

sadd

SADD key member [member …]

添加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略

hget

SCARD key

返回集合存储的key的基数 (集合元素的数量)

sdiff

SDIFF key [key …]

返回的集合元素是第一个key的集合与后面所有key的集合的差集

sinter

SINTER key [key …]

返回指定所有的集合的成员的交集.

sismember

SISMEMBER key member

返回成员 member 是否是存储的集合 key的成员.

srem

SREM key member [member …]

在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略

sunion

SUNION key [key …]

返回给定的多个集合的并集中的所有成员.

smembers

SMEMBERS key

返回key集合所有的元素.

  • 注意:
  • 集合是通过哈希表实现的

6.Redis6数据结构之Sorted Set类型介绍和应用场景

数据结构介绍:

  • 用于将一个或多个成员元素及其分数值加入到有序集当中
  • 如果某个成员已经是有序集的成员,那么更新这个成员的分数值,分数值可以是整数值或双精度浮点数。
  • 有序集合可以看做是在Set集合的的基础上为集合中的每个元素维护了一个顺序值: score,它允许集合中的元素可以按照score进行排序
  • 应用场景
  • 实时排行榜:商品热销榜、体育类应用热门球队、积分榜
  • 优先级任务、队列
  • 朋友圈 文章点赞-取消,逻辑:用户只能点赞或取消,统计一篇文章被点赞了多少次,可以直接取里面有多少个成员

命令

输入方式

功能

zadd

ZADD key score1 member1 [score2 member2]

向有序集合添加一个或多个成员,或者更新已存在成员的分数

zcard

ZCARD key

获取有序集合的成员数

zcount

ZCOUNT key min max

计算在有序集合中指定区间分数的成员数

zincrby

ZINCRBY key increment member

返回指定所有的集合的成员的交集.

zrange

ZRANGE key start stop [WITHSCORES]

通过索引区间返回有序集合指定区间内的成员, 成员的位置按分数值递增(从小到大)来排序

zrevrange

ZREVRANGE key start stop [WITHSCORES]

通过索引区间返回有序集合指定区间内的成员, 成员的位置按分数值递增(从大到小)来排序

zrevrank

ZREVRANK key member

返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

zrank

ZRANK key member

返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列

zrem

ZREM key member [member …]

移除有序集合中的一个或多个成员

zscore

ZSCORE key member

返回有序集中,成员的分数值

  • 注意
  • 底层使用到了Ziplist压缩列表和“跳跃表”两种存储结构
  • 如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果
  • 什么是跳跃表:性能堪比红黑树,而且实现起来比红黑树简单很多