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命令获取指定药品的排名。