一、redis核心数据结构




使用Redis操作购物车数据 redis hash 购物车_数据结构


1.string


使用Redis操作购物车数据 redis hash 购物车_并集_02


使用Redis操作购物车数据 redis hash 购物车_redis_03


比如:计数器(incr和get命令即可)


使用Redis操作购物车数据 redis hash 购物车_redis_04


2.hash


使用Redis操作购物车数据 redis hash 购物车_并集_05


使用Redis操作购物车数据 redis hash 购物车_使用Redis操作购物车数据_06


redis非常忌讳存储大key和大value,因为redis是一个单线程操作,如果一个命令卡住了几秒或十几秒,其他操作都被阻塞着,所以尽量使用小key.


使用Redis操作购物车数据 redis hash 购物车_使用Redis操作购物车数据_07


使用Redis操作购物车数据 redis hash 购物车_使用Redis操作购物车数据_08


新建一个购物车key为(cart:1001)


cart:代表前缀;
1001:代表用户id;
10088:代表商品;
1:代表数量;


使用Redis操作购物车数据 redis hash 购物车_redis_09


使用hincrby命令对购物车商品数量+1操作


使用Redis操作购物车数据 redis hash 购物车_并集_10


再添加两个商品

hset cart:1001 10089 1

hset cart:1001 10090 1

获取购物车所有商品

hgetall cart:1001


使用Redis操作购物车数据 redis hash 购物车_数据结构_11


知道购物车用户和商品id,使用ajax获取商品详情,从而使用购物车,大大提高了性能


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_12


为什么这么说呢?

因为有可能hash 对key有可能都存在一个redis集群某一个节点下,


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_13


3.list


使用Redis操作购物车数据 redis hash 购物车_数据结构_14


使用Redis操作购物车数据 redis hash 购物车_并集_15


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_16


使用Redis操作购物车数据 redis hash 购物车_redis_17


使用Redis操作购物车数据 redis hash 购物车_redis_18


可以轻松实现数据结构栈,非常容易


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_19


举个场景:比如你关注了很多明星大V,进入主页看到非常多消息,按照时间倒排

如果使用数据库实现有些复杂了,如果使用redis呢?


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_20


熟悉下 LPUSH 和LRANGE命令

一般不是一个粉丝,大V都会有非常多粉丝,每发一条消息都需要往redis插入一条数据吗?

具体看业务场景,看粉丝多少,如果粉丝不超过万都是可以的,因为redis的qps理论接近十万,足够了!当然如果上千万或亿万粉丝,那么这种方式就不合适了,(早期大V发一条微博就挂了)

4.set


使用Redis操作购物车数据 redis hash 购物车_并集_21


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_22


比如:微信抽奖小程序

全部人,中奖人


使用Redis操作购物车数据 redis hash 购物车_使用Redis操作购物车数据_23


随机抽取两个不删除原来集合元素(普通情况)


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_24


第二种情况:

随机拿两个元素并删除原来集合元素(适合抽取一等奖、二等奖、三等奖)


使用Redis操作购物车数据 redis hash 购物车_使用Redis操作购物车数据_25


使用Redis操作购物车数据 redis hash 购物车_redis_26


微信微博点赞场景

检查用户是否点过赞(朋友圈是否有❤️高亮)

当然朋友圈是仅限于熟人,根据用户关系的算法设计的,

关注模型(非常重要的后端技术,可以推送消息,可以推送购买商品,可以挖掘你关注和关注你的兴趣爱好)


使用Redis操作购物车数据 redis hash 购物车_数据结构_27


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_28


SISMEMBER求后面的元素是否在前面的集合(只需要展示几个人,其他分页做 )

SINTER求交集,

SUNION求并集

SDIFF求差集(以第一个集合为标准,第一个集合-后面所有集合的并集)


使用Redis操作购物车数据 redis hash 购物车_使用Redis操作购物车数据_29


5.zset


使用Redis操作购物车数据 redis hash 购物车_使用Redis操作购物车数据_30


使用Redis操作购物车数据 redis hash 购物车_数据结构_31


使用Redis操作购物车数据 redis hash 购物车_数据结构_32


热度排行榜

一条消息执行一条操作


使用Redis操作购物车数据 redis hash 购物车_数据结构_33


使用Redis操作购物车数据 redis hash 购物车_并集_34


redis其他使用场景


使用Redis操作购物车数据 redis hash 购物车_redis 删除key中某一元素_35