Redis总结(3)——Redis的数据类型与该类型的适用场景

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaojie_570/article/details/87009903

Redis 的五种数据类型

Redis 有五种数据类型: String、hash、list、set、sortedSet

一、String类型

这是最基本的类型,就是普通的 set 和 get, 可以做简单的 kv缓存

常用的方法

  • 【set a avalue】
  • 【setex a 100 avalue】 设置a的时候加入了过期时间
  • 【psetex a 100 avalue】 单位比 setex 要小
  • 【getrange world 0 2】 拿 world键对应的值的 0 - 2的元素
  • 【mset a avalue b bvalue c cvalue】 可以同时设置多个键值对
  • 【setnx a anewavalue】 当且只有 setnx的 key 不存在的时候,才会设置成功
  • 【strlen world】 获取键对应的值的长度
  • 【append a str】 在 a 键对应的值上追加 str

二、 hash

这个是类似map的一种结构,一般可以将结构化的数据,比如一个对象(前提是这个对象没有嵌套其他的对象)给缓存到 redis里,然后每次读写缓存的时候,可以只操作 hash 里面的某个字段。

key=150

value={
  “id”: 150,
  “name”: “zhangsan”,
  “age”: 20
}

hash 类的数据结构,主要是用来存放一些对象,把一些简单的对象给缓存起来,后续操作的时候,你可以直接仅仅修改这个对象中某个字段的值

常用的方法

  • 【hset map name fj】 map 是该hash对象的名字
  • 【hget map name】 获取该map中的name值
  • 【hgetall map】 拿 map 对象中所有键值
  • 【hkeys map】 拿 map 对象的所有键
  • 【hvals map】 拿 map 对象的所有值
  • 【hmget map name age】 拿 map 对象中键 name 与 age 对应的值

三、list对象

有序列表,这个是可以有很多用处的。

微博中的某个大V粉丝,就可以以 list 的格式存放在redis里缓存

key = 某大V

value = {zhangsan,lisi,wangwu}

使用场景:

  • 比如可以通过list 村粗一些列表型数据结构,类似粉丝列表、文章的评论列表之类的。
  • 比如可以通过lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高。

常用的方法

  • 【lpush list 1 2 3 4 5 6 7 8 9 10】 list 是该对象的名字
  • 【llen list】 返回该对象list的长度
  • 【lrange list 0 2】 返回的是 10 9 8 ,说明lpush操作是将新元素放入头部。
  • 【lset list 0 100】 将0元素变为100
  • 【lindex list 5】 获取第五个元素
  • 【lpop list】 移除列表的第一个元素
  • 【rpop list】 移除列表的最后一个元素

四、set(无需集合,自动去重)

直接基于 set 将系统里需要去重复的数据扔进去,自动就可以去除重复了。如果你需要对一些数据进行快速的全局去重,你可以使用基于 JVM 内存里的 HashSet 进行去重,但是如果你的某个系统部署在多台机器上呢?

如果你的系统部署在多个机器上,你就需要基于 redis 进行全局的set 去重。

可以基于 set 进行交集、并集、差集的操作,交集操作就可以将两个大V的粉丝列表做一个交集,查看两个人的共同好友。

常用的方法

  • 【sadd set1 a b c d】 set1 是该对象的名字
  • 【scard set1】 返回 set1 中的元素个数
  • 【smemebers set1】 获取set1中的全部元素。
  • 【sdiff set1 set2】 获取 set1 和 set2 的差集
  • 【sinter set1 set2】 获取set1 set2 的 交集
  • 【sunion set1 set2】 获取set1 set2 的 并集
  • 【sismember set1 a】 判断 a 是否是 set1 中的元素
  • 【srem set1 a b】 将元素 a 和 b 从 set1 中移除

五、 sortedset

排序的 set,去重但是可以排序,写进去的时候给个分数,自动根据分数排序。

如:你想要根据时间对数据进行排序,那么就可以写入进去的视乎用某个时间作为分数,人家自动给你按照时间排序了。

排行榜:将每个用户以及其对应的分数写入进去,zadd board score username,接着zrevrange board 0 99,就可以获取排名前100的用户;zrank board username,可以看到用户在排行榜里的排名。

常用的方法

  • 【zadd sortedset1 100 a 200 b 300 c】 sortedset1 是该对象的名字
  • 【zcard sortedset1 】 获取 sortedset1 中元素的个数
  • 【zcount sortedset1 0 220】 返回 sortedset1 对象中 0-220 分的元素个数。
  • 【zrange sortedset1 0 100】 将 sortedset1 对象中前 100 的元素列举出来
  • 【zrange sortedset1 0 100 withscores】 将 sortedset1 对象中前 100 的元素列举出来,带分数

猜你喜欢

转载自blog.csdn.net/xiaojie_570/article/details/87009903