redis数据结构

Redis支持哪些数据结构?

string,hash,list,set,Sortedset(初级水平)

HyperLogLog,Geo,Pub/Sub (中级水平)

Redis Module , BloomFilter(避免缓存击穿),RedisSearch, Redis-M(高级水平)

  • String类型

Value可以说是String也可以是数字

一般做一些复杂的计数功能的缓存

操作:

1) 赋值和取值

Set Key Value

Get Key

2) 递增数字

存储的字符串是数字 场合

INCR Key

 

假设

客户端A  INCR num ,5-》6

 同时客户端B INCR num 5-》6?7?

会不会出现数据不一致的状况

       答案是不会,每个redis的命令都是原子操作

 

Redis对Key的命名没有特殊规定,方便起见最好“对象类型:对象ID:对象属性”,比如“USER:1:FRIENDS”

   另外还有一些常用命令:

INCRBY KEY increment

DECR KEY

DECRBY KEY increment

INCRBYFLOAT KEY increment

APPEND KEY Value

STRLEN KEY

MGET KEY [KEY…]

 例如:MGET KEY1 KEY2

MSET KEY VALUE [KEY VALUE…]

GETBIT KEY OFFSET

SETBIT KEY OFFSET VALUE

BITCOUNT KEY [start] [end]

BITOP operation destkey key [key…]

注意:位操作索引从0开始

  • Hash类型

Hash类型是一个String类型的field和value的键值对,每个hash可以存储232 - 1 键值对(40多亿)。

hash类型的(key, field, value)的结构与对象的(对象id, 属性, 值)的结构相似

 

应用场景

比如购物车:

以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的3个要素,如下图所示。

 

 |filed1|--|value|

Key--|filed2|--|value|

 |filed3|--|value|

操作:

  HSET Key field value

  HGET Key field

  HMSET Key field value [field value]

  HMGET Key field [field…]

  HGETALL key

  HEXISTS key field

  HSETNX key field value

  HINCRBY key field increment

  HDEL key field [field…]

  HKEYS Key

  HVALS key

  HLEN key

 

  • 集合

集合中每个元素的值不同,并且没有顺序。

操作

 SADD key member1 [member2] 集合中添加一个或多个成员

 SCARD key 获取集合的成员数

 SDIFF key1 [key2] 返回给定所有集合的差集

 另外还有 求并集,交集的操作

  还有其他一些操作参考https://www.runoob.com/redis/redis-sets.html

   应用场景

     比如 微博中关注好友,共同好友,共同关注

  • 有序集合

和集合一样,不同的是元素是有序的

 

 

参考:

https://www.cnblogs.com/pangzizhe/p/10657801.html

《redis入门指南》

posted @ 2020-01-16 18:16  hayleeliu  阅读(155)  评论(0编辑  收藏  举报