这里介绍5种基本数据结构的使用场景:String、Hash、List、set和Zset。
1. StringString数据结构可以用于计数这一功能,如记录作品和文章的点赞数、歌曲的播放量等。
SET like:articles001 0 //初始化作品1的点赞数,一开始为0 INCR like:articles001 //之后每当有用户对作品点赞时,redis就调用INCR对作品的点赞数+12. Hash
Hash可以理解成Java中的嵌套Map结构,即Map
因此Hash数据结构可以用来实现购物车这一功能。
MHSET shopcar:uid001 items001 1 items002 1 // 这里假设用户1的购物车中有2个商品item1和item2,数量都为1 MHSET shopcar:uid001 items003 1 // 这里又添加了item3 数量为1 HINCRBY shopcar:uid001 items001 1 //用户1又添加了一件items1 HDEL shopcar:uid001 items002 //用户1将items2移出了购物车
相当于将redis当作Mysql数据库来使用。
3. ListList数据结构可以用来保存文章列表等。
4. set 4.1 Set实现抽奖功能实现抽奖功能主要依赖于Set数据结构中的SRANDMEMBER和SPOP方法
SADD lucky_draw1 uid001 uid002 uid045 uid111 uid398 uid339 uid192 uid532 uid098 uid014 uid183 uid139 uid894 // 添加抽奖用户 SPOP lucky_draw1 3 //抽出3位幸运儿,并将它们移出集合。4.2 Set实现社交媒体功能
实现社交媒体功能主要依赖于Set数据结构中的SDIFF(求交集),SINTER(求差集),SISMEMER,SMEMBERS这类集合运算方法来实现
SADD follow:uid0001 uid1234 uid3485 uid1212 uid0451 uid4821 uid3841 uid9999 SADD follow:uid1234 uid3241 uid3385 uid0212 uid1451 uid0421 uid8410 uid9999 SINTER follow:uid1234 follow:uid0001 //共同好友 SDIFF follow:uid1234 follow:uid0001 //可以为用户0001实现”你可能喜欢“这一功能 SISMEMER follow:uid0001 uid1234 SISMEMER follow:uid0001 uid9999 SISMEMER follow:uid1234 uid9999 //三者都为true,说明我关注的用户1234,他也在关注用户99995. Zset
Zset可以实现根据某一分数动态动态排序这一功能,例如热搜排行榜,豆瓣电影评分等。
ZADD Movie:Romantic 6.7 movie1 8.8 movie2 9.3 movie3 5.5 movie4 7.7 movie5 //假设有5部电影 ZREVRANGE Movie:Romantic 0 5 WITHSCORES //根据评分从高到低对电影继续排序



