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

devtools/2025/3/19 19:40:03/

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


http://www.ppmy.cn/devtools/168422.html

相关文章

C#语言的响应式设计

C#语言的响应式设计 引言 随着信息技术的不断发展,响应式设计已经成为现代软件开发中一个重要的设计理念。它不仅应用于前端开发,还逐渐扩展到后端开发以及各种编程语言中。C#语言作为一种强类型、面向对象的编程语言,逐渐在响应式设计的过…

2.git和github操作:diff链接

目录 1. 获取差异链接的核心方法方法 1:通过分支/提交比较生成链接(适用于 GitHub/GitLab/Bitbucket)方法 2:使用单次提交的差异链接(查看某次提交的改动)方法 3:通过 Pull Request(…

微服务即时通信系统---(五)框架学习

目录 ODB 介绍 安装 build2安装 odb-compiler安装 ODB运行时库安装 mysql和客户端开发包安装 boost profile库安装 总体打包安装 总体卸载 总体升级 头文件包含和编译时指明库 ODB常见操作介绍 类型映射 ODB编程 类与接口介绍 mysql连接池对象类 mysql客户端…

LabVIEW 线性拟合

该 LabVIEW 程序实现了 线性拟合(Linear Fit),用于计算给定一组数据点的斜率(Slope)和截距(Intercept),并将结果可视化于 XY Graph 中。本案例适用于数据拟合、实验数据分析、传感器…

RCore学习记录001

配置环境 我选择的操作系统环境是Ubuntu24.04的虚拟机 安装qemu7.0.0 安装依赖库 sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build build-essential git-email libaio-dev libbluetooth-dev libcapstone-dev libbrlapi-dev libb…

【c++】c++语言中““符号的用途介绍

c语言中,“&”符号有4种用途:逻辑与运算符、按位与运算符、取地址运算符、引用标识符。前三种作用在c语言和c语言中是共有的,而第4种作用是c中特有的。下边对这4种用途做个介绍。 一、几个相关的概念 1、运算符 c运算符是指用于执行程序…

Git:速查手册

Git:速查手册 1.基础知识四个区域文件状态基本概念特殊文件GitFlow 2.CMD初始化设置创建仓库添加与提交撤销与恢复状态与差异远程仓库操作分支Stash: 1.基础知识 四个区域 工作区(Working Directory):你在电脑里能实际看到的目录。…

ubuntu 没有网卡的解决方案

(1) 输入sudo service network-manager stop (2) sudo rm /var/lib/NetworkManager/NetworkManager.state (3) sudo service network-manager start (4) sudo vim /etc/NetWorkManager/NetworkManager.conf,将其中的managedfalse改为managedtrue 或者使用gedit&…