String、Hash、Set、List、Zset、Hyperloglog、Geo、Streams

一、String

最基本也是最常用的数据类型就是String。get和set命令就是String的操作命令,Redis的字符串被叫做二进制安全的字符串(Binary-safe strings)。

String可以存储三种类型,INT(整数)、float(单精度浮点数)、string(字符串)。

 # 基于此实现分布式锁

 设置值,如果key存在,则不成功 setnx jack shuaige

# (整数)值递增(值不存在会得到1)

 incr jack incrby jack 100

二、Hash

用来存储多个无序的键值对,最大存储数量2^32-1(40亿左右)。

优点:

把所有相关的值聚集到一个Key中,节省内存空间

只使用一个Key,减少Key冲突

当需要批量获取值的时候,只需要使用一个命令,减少内存/IO/CPU的消耗

缺点:

Field不能单独设置过期时间

需要考虑数据量分布的问题(field非常多的时候,无法分布到多个节点)

redis相关:redis的基本类型有哪些? 使用场景-1(String、Hash、Set、List)_字符串

# 设置、批量设置值 

hset h1 f 6 hset h1 e 5 

hmset h1 a 1 b 2 c 3 d 4 

# 取值 hget h1 a 

# 批量取值 hmget h1 a b c d

# 获取所有field hkeys h1 

# 获取所有field的值 hvals h1

# 返回哈希表中,所有的字段和值 hgetall h1 

# 删除field hdel h1 a 

# 获取哈希表中字段的数量 hlen h1

三、List

介绍

存储有序的字符串(从左到右),元素可以重复,最大存储数量2^32-1(40亿左右)。

下面通过画图来演示一下入队列,出队列

redis相关:redis的基本类型有哪些? 使用场景-1(String、Hash、Set、List)_List_02

操作命令

# 左推 lpush queue a lpush queue b c

 # 右推 rpush queue d e

 # 左边移除并返回列表的第一个元素 lpop queue

 # 右边移除并返回列表的第一个元素 rpop queue

 # 通过索引获取列表中的元素 lindex queue 0 

 # 返回列表中指定区间内的元素 lrange queue 0 -1

四、Set

介绍

Set 存储 String 类型的无序集合,最大存储数量 2^32-1(40亿左右)。

操作命令

# 添加一个或多个元素 sadd myset a b c d e f g 

# 获取所有元素 smembers myset 

# 统计元素个数 scard myset 

# 随机获取一个元素 srandmember myset 

# 随机弹出一个元素 spop myset 

# 移除一个或者多个元素 srem myset d e f 

# 查看元素是否存在 sismember myset a

 # 获取差集 sdiff set1 set2

 # 获取交集 sinter set1 set2

 # 获取并集 sunion set1 set2

应用场景

1、抽奖

随机获取元素:spop myset

1、            点赞、签到、打卡

我们以微博举例子,假设这条微博的ID是t1001,用户ID是u6001,

用dianzan:t1001来维护t1001这条微博的所有点赞用户。

点赞了这条微博:sadd dianzan:t1001 u6001

取消点赞:srem dianzan:t1001 u6001

是否点赞:sismember dianzan:t1001 u6001

点赞的所有用户:smembers dianzan:t1001

点赞数:scard dianzan:t1001

3、商品标签

用 tags:i8001 来维护商品所有的标签。

sadd tags:i8001 画面清晰细腻

sadd tags:i8001 真彩清晰显示屏

sadd tags:i8001 流畅至极

4、商品筛选

华为P40上线了,支持民族品牌,加到各个标签中去。

sadd brand:huawei p40

sadd os:android p40

sadd screensize:6.0-6.24 p40

买的时候筛选,牌子是华为,操作系统是安卓,屏幕大小在6.0-6.24之间的,取交集:

sinter brand:huawei os:android screensize:6.0-6.24