当前位置: 首页 > news >正文

Redis常用数据类型和使用常见以及基本操作举例(适合初学者,以医药连锁管理系统为背景)

Redis的常见数据类型,包括String、Hash、List、Set、Zset等,这些数据类型都有各自的特点和适用场景。接下来,将这些数据类型与医药连锁管理系统的业务场景进行匹配。

String类型,适合存储单个值。在医药连锁管理系统中,药品库存数量,需要实时更新和查询,所以可以使用String类型来存储药品的库存数量。

Hash类型存储键值对集合适合存储对象。在医药连锁管理系统中,用户信息通常包含多个字段,如用户名、密码、电话等,所以可以使用Hash类型来存储用户信息。

List类型,是一个有序的字符串元素集合适合实现队列或栈。在医药连锁管理系统中,药品的出入库记录是一个有序的过程,可以使用List类型来存储药品的出入库记录。

Set类型,是一个无序的唯一元素集合,适合进行集合运算。在医药连锁管理系统中,统计不同门店的热销药品是一个常见的需求,可以使用Set类型来统计热销药品

Zset类型类似于集合,但每个元素都有一个关联的分数,用于排序。在医药连锁管理系统中,可以使用Zset类型来实现药品销量排行榜


下面针对每个数据类型适合的业务常见,分别举例演示,对Redis数据库进行操作。(当然实际的企业级开发中是结合的Spring对Redis的整合,这里直接操作的Redis数据库,跟实际企业开发中的使用有不同,只是为了初学者了解Redis数据库的简单使用,至于实际企业级开发中对Redis的使用在后续章节中会再做阐述。)

1.String(字符串)

使用方法:基本的数据存储单元,可以存储字符串、整数或者浮点数。常用命令有SET、GET、INCR、DECR等。

实际业务应用场景:存储药品的库存数量。例如,当某个药品的库存发生变化时,可以使用INCR或DECR命令来原子性地增加或减少库存数量。

# 设置药品A的初始库存为100
SET drugA_stock 100

# 增加药品A的库存数量(例如进货)
INCRBY drugA_stock 50

# 减少药品A的库存数量(例如销售)
DECRBY drugA_stock 10

# 获取药品A的当前库存数量
GET drugA_stock

分析解释:使用String类型存储药品库存数量,利用INCRBY和DECRBY命令可以方便地进行库存的增减操作,并且这些操作是原子性的,能够保证在高并发情况下数据的一致性。

2.Hash(哈希)

使用方法:一个键值对集合,可以存储多个字段和与字段关联的值。常用命令有HSET、HGET、HDEL、HINCRBY等。

实际业务应用场景:存储用户信息,如用户名、密码、电话等。可以将每个用户的信息存储为一个Hash类型,方便快速获取和更新用户信息。

# 设置用户信息
HSET user:001 username "张三" password "123456" phone "13800138000"

# 获取用户张三的电话号码
HGET user:001 phone

# 更新用户张三的密码
HSET user:001 password "654321"

# 获取用户张三的所有信息
HGETALL user:001

分析解释:使用Hash类型存储用户信息,可以将多个相关字段存储在一起,方便统一管理和查询。通过HSET和HGET等命令可以方便地对用户信息进行增删改查操作。

3.List(列表)

使用方法:有序的字符串元素集合,可用于实现队列或栈。常用命令有LPUSH、RPUSH、LPOP、RPOP、LRANGE等。

应用场景:存储药品的出入库记录。可以将每次出入库的时间、数量、操作人等信息作为列表元素,按照时间顺序存储在List中。

# 添加药品A的出入库记录(出库)
LPUSH drugA_records "2023-10-12 10:00:00 出库 10瓶 操作人:李四"

# 添加药品A的出入库记录(入库)
LPUSH drugA_records "2023-10-12 11:00:00 入库 50瓶 操作人:王五"

# 获取药品A的最近3条出入库记录
LRANGE drugA_records 0 2

 分析解释:使用List类型存储药品的出入库记录,可以方便地按照时间顺序记录和查询药品的出入库情况。通过LPUSH命令将新的记录添加到列表头部,保持记录的顺序性。

4.Set(集合)

使用方法:无序的唯一元素集合。常用命令有SADD、SREM、SMEMBERS、SINTER等。

医药连锁管理系统中的应用场景:统计不同门店的热销药品。可以将每个门店的热销药品ID存储在Set中,然后通过集合的交并运算来统计出所有门店的热销药品。

# 添加门店1的热销药品ID
SADD hot_drugs:store1 1001 1002 1003

# 添加门店2的热销药品ID
SADD hot_drugs:store2 1002 1003 1004

# 获取所有门店的热销药品ID(并集)
SUNION hot_drugs:store1 hot_drugs:store2

# 获取同时在门店1和门店2热销的药品ID(交集)
SINTER hot_drugs:store1 hot_drugs:store2

5.Zset(有序集合)

使用方法:类似于集合,但每个元素都有一个关联的分数,用于排序。常用命令有ZADD、ZREM、ZRANGE、ZSCORE等。

医药连锁管理系统中的应用场景:药品销量排行榜。可以将每个药品的销量作为分数,药品ID作为成员存储在Zset中,按照销量进行排序,方便查看销量排名。

# 添加药品销量(药品ID为1001,销量为200)
ZADD drug_sales_ranking 200 1001

# 添加药品销量(药品ID为1002,销量为150)
ZADD drug_sales_ranking 150 1002

# 获取销量排名前3的药品ID和销量
ZRANGE drug_sales_ranking 0 2 WITHSCORES

# 获取药品ID为1001的销量排名
ZRANK drug_sales_ranking 1001

 分析解释:使用Zset类型存储药品销量,可以方便地按照销量进行排序和查询排名。通过ZADD命令添加药品销量,ZRANGE命令获取排名列表,ZRANK命令获取指定药品的排名。

相关文章:

  • 安装并使用anaconda(宏观版)
  • https握手过程
  • 【 node.js 】windows 电脑:node版本更换
  • [HelloCTF]PHPinclude-labs超详细WP-Level 1-FILE协议
  • Qt Widgets、Qt Quick
  • AI建模智能生成:从2D到3D,AI只需一步!
  • C语言——结构体、联合、枚举
  • DEEPSEEK可能是 “特洛伊木马“:论第三方数据模型的潜在安全威胁
  • 基于x11vnc的ubuntu远程桌面
  • Elasticsearch分页查询、关键词高亮与性能优化全解析
  • LeetCode热题100JS(54/100)第十天|124|200|994|207|208
  • 数图亮相第三届全国生鲜创新峰会,赋能生鲜零售数字化转型
  • 【力扣100】简要总结之哈希
  • 配置blender的python环境
  • 红黑树的部分实现(C++)
  • IPD解读——IPD重构产品研发与产品管理
  • C程序设计(第五版)及其参考解答,附pdf
  • Android开源库——RxJava和RxAndroid
  • 前端传参+后端接参对照
  • java项目40分钟后token失效问题排查(40分钟后刷新页面白屏)
  • 浙商银行外部监事高强无法履职:已被查,曾任建行浙江省分行行长
  • 跟着京剧电影游运河,京杭大运河沿线六城举行京剧电影展映
  • 金科服务:大股东博裕资本提出无条件强制性现金要约收购,总代价约17.86亿港元
  • 上海数学教育及数学科普专家陈永明去世,享年85岁
  • 人民日报社论:做新时代挺膺担当的奋斗者
  • 广州一人均500元的日料店回收食材给下一桌?市场监管部门介入调查