redis 数据类型基本用法

String

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

hash

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

key=42

value=

{

"id":42

“name":yaya

"age":20

}

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

key=42

value=

{

"id":42

“name":yaya

"age":21

}

list

有序列表,这个是可以玩很多花样的

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

key=某大v

value=【静静,琪琪,雅雅】

比如通过 list 存储一些列表型的数据结构,类似粉丝列表、文章的评论列表了之类的东西

比如可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高,就一页一页走。

比如可以搞一个简单的消息队列,从 list 头怼进去,从 list 尾巴哪里弄出来;

set 

无序集合,自动去重; 

直接基于 set 将系统里需要去重的数据丢进去,自动就给去重了。如果你需要对一些数据进行快速的全局去重,你当然也可以基于 jvm 内存里的 hashSet 进行去重,但是如果你的某个系统部署在多台机器上呢?

得基于 redis 进行全局得 set 去重;

  可以基于 set 玩儿交集、并集、差集的操作,比如交集吧,可以把两个人的粉丝列表整一个交集,看看两个的共同好友是谁。对吧;

把两个大 v 的粉丝都放在两个 set 中,对两个 set 做交集;如果 set 做交集就百度;api调用了 

sorted set    zset

排序的 set 去重但是可以排序,写进去的时候一个分数,自动根据分数排序,这个可以玩很多花样,最大的特点是有个分数可以自定义排序规则

比如说你要是根据时间对数据排序,那么可以写入进去的时候用某个时间作为分数,人家自动给你按照时间排序了

排行榜:

zadd board 88 jingjing

zadd board 89 qiqi 

zadd board 90 yaya

zadd board 60 htion

自动根据 分数 排序

90 yaya

89 qiqi

88 jingjing

60 htion

接下来 zrevange board 0 99,就可以获取排名前 100 的用户,zrank board username,就可以看到用户在排行榜里的排名。

 zrevrange board 0 3

获取排名前 3 的用户

90 yaya

89 qiqi

88 jingjing

现在 qiqi 的排序就是在第二

zrank board qiqi

2

猜你喜欢

转载自www.cnblogs.com/H-hy/p/11304795.html