目录

1、String类型常见的使用场景

1.1 一般的业务功能模块,比如购物车

1.2 简单的字符缓存

1.3 储存结构体或者对象

1.4 计数功能

1.5 各类场景下(单机或分布式)的标识号

1.6 集群环境下的Session共享

1.7 redis实现分布式锁

2 hash使用场景

3 list使用场景

3.1 微信公众号列表

4 set使用场景

4.1 微信抽奖活动

4.2 微信点赞设计

4.3 两个人共同兴趣爱好,微博共同关注人等

5 zset使用场景

5.1 常用于排行榜,视频点赞排行,关注排行


1、String类型常见的使用场景

1.1 一般的业务功能模块,比如购物车

设计key值的时候,尽量简洁、明了,比如xxx:cart:001表示某个用户的购物车信息

1.2 简单的字符缓存

项目中有些地方无法保存字符,可以存储到redis中,但是注意是否要设计加上过期时间和做好key的设计,否则redis莫名其妙的key会越来越多,难以维护

1.3 储存结构体或者对象

  • 首先把对象转换成json字符串
  • 然后set user:01 value
  • 或者直接存储mset user:1:name a user:1:age 18

1.4 计数功能

点赞数或者文章浏览数等,可以方便通过incr来增加,decr来减少点赞或浏览次数(

NCR article:001        GET  article:001

1.5 各类场景下(单机或分布式)的标识号

比如我们常用的mysql是使用主键自增的,我们可以借助redis来帮我们生成唯一的主键,但是如果一次添加的数据比较多,会对redis有较大压力,可以一次从redis获取多个主键编号,然后使用incrby一次性增加具体的数目:incrby serialNo 1000

1.6 集群环境下的Session共享

使用spring session与redis完成session共享

1.7 redis实现分布式锁

redis使用String+lua实现分布式锁

2 hash使用场景

2.1 hash存储数据的两种结构

第一种:hmset user:1 name tom age 12

第二种:hmset user 1:name tom 2:age 12

功能

1.全选功能-获取所有该用户的所有购物车商品

2.商品数量-购物车图标上要显示购物车里商品的总数

3.删除-要能移除购物车里某个商品

4.增加或减少某个商品的数量

userid:  001 如何设计实现?

hmset cart:001 prod:01 1 prod:02 1

指令说明:

当前登录用户ID号做为KEY,商品ID号为Field, 加入购物车数量为value

我看到一篇写的比较全面的,还有代码,可以参考:使用redis的hash 实现简单的购物车功能

3 list使用场景

3.1 微信公众号列表

公众号1发布了一个消息:

lpush msg:01 1(消息id)

公众号2发布了一个消息:

lpush msg:01 2(消息id)

我的公众号消息列表:

lrange mes:01 0 5

4 set使用场景

4.1 微信抽奖活动

  1. 把抽奖的数据放入set集合 :sadd act:001  004
  2. 开始抽奖2名中奖者,随机选择2个:srandmember act:001 2 或 spop act:001 2
  3. 查看有多少用户参加了本次抽奖 :smembers act:001

4.2 微信点赞设计

  • 面试题目:朋友圈消息ID:008,微信点赞如何设计? 张三用户ID 为userId:01
  • 张三对消息ID008点赞啦       sadd zan:008  userId:01
  • 张三取消了对消息008的点赞       srem zan:008  userId:01
  • 检查用户是否点过赞       sismember zan:008  userId:01
  • 获取消息ID008所有的点赞用户列表       smembers zan:008
  • 消息ID008的点赞数计算       scard zan:008

4.3 两个人共同兴趣爱好,微博共同关注人等

初始关注条件

  • a关注的人  sadd aCare 成龙 李连杰 周星驰 c
  • b关注的人      sadd bCare 周星驰 周润发 张国荣 c
  • c关注的人      sadd cCare 周星驰 李连杰 王祖贤

1)a和b共同关注的人      sinter aCare bCare , 计算结果为 {周星驰 ,c} 计算

2) 我关注的人也关注他(c老师)      sismember aCare c ;sismember cCare 周星驰 ;计算

3)我可能认识的人      SDIFF aCare bCare -> {周润发,张国荣}

5 zset使用场景

5.1 常用于排行榜,视频点赞排行,关注排行

今日头条人们换题榜

1)点击话题 zincrby topic:20191022 1 ;当前话题查看新增1

2)  展示今日前9排名的新闻 zrevrange  topic:20191022 0 20  withscores

3)统计近3日点击数据,并存放的新的集合 zunionstore topic:3day 3  topic:20191022  topic:20191021 topic:20191020

4) 展示近3日的排行前9名 zrevrange topic:20191022-20191020  0  9   withscores

redis的String、List、Hash、SET、ZSet五中数据类型常用的一些场景总结相关推荐

  1. string类型比较_redis存json数据时选择string还是hash

    我们在缓存json数据到redis时经常会面临是选择string类型还是选择hash类型去存储.接下来我从占用空间和IO两方面来分析这两种类型的优势. 1.占用空间 根据数据结构的共识我们知道hash ...

  2. 分布式内存数据库---Redis操作String、list、set、hash和Zset

    Redis是一个Key-Value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类 ...

  3. Redis五大基本数据类型(String、LIst、Set、Hash、ZSet)及其底层结构

    文章目录 零.Redis中Key相关操作 一.字符串(String) 二.列表(List) 三.集合(Set) 四.哈希(Hash) 五.有序集合(Zset) 零.Redis中Key相关操作 keys ...

  4. 带你掌握Redis数据类型:string和Hash

    摘要:Redis中有五大数据类型,分别是String.List.Set.Hash和Zset. 本文分享自华为云社区<Redis的string类型常用命令解析>,作者:灰小猿 . 先问大家一 ...

  5. redis类型[string 、list 、 set 、sorted set 、hash]

    Keys redis本质上一个key-value db,所以我们首先来看看他的key. 首先key也是字符串类型,但是key中不能包括边界字符:由于key不是binary safe的字符串,所以像&q ...

  6. (Redis_学习一)Redis关于string类型和hash类型数据操作

    Redis关于string类型和hash类型数据操作 set name xiaohongyang // get name setnx name xiaohy get name setex name 1 ...

  7. 宝塔面板Redis数据管理工具hash和zset类型报错的解决方法

    问题描述         在宝塔面板的Redis数据管理工具中,查询其他数据都没问题,但是查询hash和zset类型的数据时页面上会出现一个黑框,并且右侧没有出现数据.         (写文章的时候 ...

  8. 【Redis之ZSet类型的详解ZSet类型中常用命令的实践】

    Redis之ZSet类型的详解&ZSet类型中常用命令的实践 知识回顾: 通过对Redis中的String的命令做了充分的讲解以及实践学习 通过对Redis中String类型之Bit命令的详解 ...

  9. Redis之String应用场景与SpringCache--存储对象信息、分布式唯一ID、文章阅读量、Lua脚本

    String应用场景 一.存储对象信息 代码 重写Redis序列 解决方式 剖析SpringCache常用注解 @CacheConfig @Cacheable @CachePut @CacheEvic ...

最新文章

  1. Android系统中标准Intent的使用
  2. 【Kick Algorithm】十大排序算法及其Python实现
  3. IOS开发-通知与消息机制
  4. 被 Kafka 虐的日子,太惨了……
  5. Java核心API -- 2(String、StringBuilder、StringBuffer)
  6. Git使用教程:真正手把手教你使用git!
  7. SpringSecurity Filter
  8. android 电池小记
  9. app中的h5游戏分享到微信等第三方
  10. Hadoop的shell命令
  11. 猿创征文|[CM311-1A Armbian]-烧录制作 Armbian 系统盘以及写入 CM311-1A 机顶盒的 EMMC 刷成服务器
  12. IEEE会议论文模板下载
  13. WPF|一个比较简单带点设计的登录界面
  14. 中国网游未来发展方向预测
  15. php 5.0入门系列教程 pdf,ThinkPHP5.0-快速入门手册(新手教程版).pdf
  16. http请求状态码有哪些?分别代表什么意思?
  17. kbhit(), bioskey(), system(pause)
  18. 24年前他被余承东招入华为,现在掌舵第四大事业群,对垒阿里张建锋、百度王海峰,腾讯汤道生
  19. java快递驿站管理系统免费_基于jsp的快递物流管理系统-JavaEE实现快递物流管理系统 - java项目源码...
  20. 单证与双证高级证书与普通证书的区别与联系

热门文章

  1. NYOJ-18 The Triangle
  2. IOI 2017 Logo
  3. 淘宝和QQ,这两个老家伙为什么越活越年轻?
  4. 淘宝H5接口获取app数据6.0格式
  5. Windows中安装MinIO文件系统
  6. 为啥人工智能的声音多是“妹纸”?女声
  7. 全球信息安全的六大战略错误
  8. 安装 K8S, Bigip, Gateway API 测试环境 (2)
  9. 短视频php源码,短视频平台开发,上传短视频
  10. 朴素贝叶斯分类(上):如何让机器判断男女?