关于redis:Redis数据类型及使用场景

8次阅读

共计 1429 个字符,预计需要花费 4 分钟才能阅读完成。

Redis 数据类型及应用场景

Redis 次要有以下几种数据类型:

  • Strings
  • Hashes
  • Lists
  • Sets
  • Sorted Sets

Redis 除了这 5 种数据类型之外,还有 Bitmaps、HyperLogLogs、Streams 等。

Strings

这是最简略的类型,就是一般的 set 和 get,做简略的 KV 缓存。

set college szu
复制代码

Hashes

这个是相似 map 的一种构造,这个个别就是能够将结构化的数据,比方一个对象(前提是 这个对象没嵌套其余的对象 )给缓存在 Redis 里,而后每次读写缓存的时候,能够就操作 hash 里的 某个字段

hset person name bingo
hset person age 20
hset person id 1
hget person name

(person = {
  "name": "bingo",
  "age": 20,
  "id": 1
})
复制代码

Lists

Lists 是有序列表,这个能够玩儿出很多花色。

比方能够通过 list 存储一些列表型的数据结构,相似粉丝列表、文章的评论列表之类的货色。

比方能够通过 lrange 命令,读取某个闭区间内的元素,能够基于 list 实现分页查问,这个是很棒的一个性能,基于 Redis 实现简略的高性能分页,能够做相似微博那种下拉一直分页的货色,性能高,就一页一页走。

# 0 开始地位,- 1 完结地位,完结地位为 - 1 时,示意列表的最初一个地位,即查看所有。lrange mylist 0 -1
复制代码

比方能够搞个简略的音讯队列,从 list 头怼进去,从 list 尾巴那里弄出来。

lpush mylist 1
lpush mylist 2
lpush mylist 3 4 5

# 1
rpop mylist
复制代码

Sets

Sets 是无序汇合,主动去重。

间接基于 set 将零碎里须要去重的数据扔进去,主动就给去重了,如果你须要对一些数据进行疾速的全局去重,你当然也能够基于 jvm 内存里的 HashSet 进行去重,然而如果你的某个零碎部署在多台机器上呢?得基于 Redis 进行全局的 set 去重。

能够基于 set 玩儿交加、并集、差集的操作,比方交加吧,能够把两个人的粉丝列表整一个交加,看看俩人的独特好友是谁?对吧。

把两个大 V 的粉丝都放在两个 set 中,对两个 set 做交加。

#------- 操作一个 set-------
# 增加元素
sadd mySet 1

# 查看全副元素
smembers mySet

# 判断是否蕴含某个值
sismember mySet 3

# 删除某个 / 些元素
srem mySet 1
srem mySet 2 4

# 查看元素个数
scard mySet

# 随机删除一个元素
spop mySet

#------- 操作多个 set-------
# 将一个 set 的元素挪动到另外一个 set
smove yourSet mySet 2

# 求两 set 的交加
sinter yourSet mySet

# 求两 set 的并集
sunion yourSet mySet

# 求在 yourSet 中而不在 mySet 中的元素
sdiff yourSet mySet
复制代码

Sorted Sets

Sorted Sets 是排序的 set,去重但能够排序,写进去的时候给一个分数,主动依据分数排序。

zadd board 85 zhangsan
zadd board 72 lisi
zadd board 96 wangwu
zadd board 63 zhaoliu

# 获取排名前三的用户(默认是升序,所以须要 rev 改为降序)zrevrange board 0 3

# 获取某用户的排名
zrank board zhaoliu

各个数据类型利用场景:

正文完
 0