Redis 研究记录<二>

本文介绍了将传统ER设计的数据库结构转换为Redis数据结构的案例,涉及用户表、用户股票关注表和用户价格监控表。通过Redis的String、Hash和Set数据类型实现数据存储,并模拟业务场景进行性能测试。在测试中,系统在一秒内能处理约200次数据库访问,性能达到142次/秒。后续将探讨如何构建Redis集群以进一步提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


第三部分

3.1 场景描述

这个部分我自己想了个应用场景,把Redis用起来。否则都纸上谈兵了。


先描述下应用, 有10w左右的用户,有活跃用户3万左右。 每个用户有

自选股1~10个. 每个用户关注股票价格1~10个。 系统会定期30分钟

向用户汇报一下价格。  如果股票超过用户关注的价格后,也会发送报告

给用户。 


3.2 原数据库结构

标准的ER设计表结构

用户表

1.      用户表(user_tb)

序号

字段名

类型

是否必须

说明

1

ID

Number(10)

100万开始,自增长

2

userName

Varchar2(32)

用户名(openid),用于登录,唯一

3

userPwd

Varchar2(32)

密码,现在不用

3

WxName

Varchar2(32)

微信号

4

ShowName

Varchar2(32)

昵称

5

Mobile

Varchar2(11)

手机

6

Name

Varchar2(32)

姓名

7

ID_Number

Varchar2(32)

身份证

8

SystemType

Varchar2(10)

业务系统类型

9

userLevel

Number(2)

用户级别

10

userRegTime

Varchar2(10)

用户注册时间

11

userRegDate

Varchar2(10)

用户注册日期

12

userLastDt

Varchar2(32)

用户最后使用时间

13

PwdEncode

Number(1)

0 未加密

14

userLastMsgDate

Varchar2(10)

用户消息日期

15

userLastMsgTime

Varchar2(10)

用户消息时间

 

 

 

 

 


1.      用户股票关注表(userStocks_tb)

区分当前表,年表

序号

字段名

类型

是否必须

说明

1

ID

Number(10)

100万开始,自增长

2

userName

Varchar2(32)

用户名(openid),用于登录

3

stockCode

Varchar2(10)

股票代码

4

marketType

Varchar2(3)

市场

5

userLastDate

Varchar2(10)

用户关注日期

6

userLastTime

Varchar2(10)

用户关注时间

7

MoveDate

Varchar2(10)

迁移到历史库的时间

 

 

 

 

 


1.      用户价格监控表(userPrice_tb)

区分当前表,年表

序号

字段名

类型

是否必须

说明

1

ID

Number(10)

100万开始,自增长

2

userName

Varchar2(32)

用户名(openid),用于登录

3

stockCode

Varchar2(10)

股票代码

4

Price

Number(5.3)

价格

5

PriceFlag

Number(2)

价格上下,1或-1

6

marketType

Varchar2(3)

市场

7

userLastDate

Varchar2(10)

用户关注日期

8

userLastTime

Varchar2(10)

用户关注时间

9

MoveDate

Varchar2(10)

迁移到历史库的日期

10

Movetype

Number(1)

1.监控触发 2.到期

 

 

 

 

 

 

 

 

 

 


关系图 





其它表结构就不写了,由于Redis是NoSql 的结构。我们对这种经典的表结构,进行转换,转换成Redis的数据结构。 


3.3 Redis数据库数据设计


String 数据清单
系统流水ID:

Seq:DataID 100000起步 自增

Seq:LogID  100000起步 自增


配置常量

Systemcfg:Auto 1

Systemcfg:DataPath “E:\run”


Hash 数据清单

User: $username                  $username 是个变量(以下类同),用户名, 主键。 

字段(值对)为 user_tb


User_StockList:$Userid:$Stock

字段(值对)为 userStocks_tb


User_StockPrice:$UserName:$stock

字段(值对)为userstockPrice_tb



Set 数据清单

User_Stock:$UserName  , 类型为Set                  用户关注的股票

User_StockPrice:$UserName  类型为Set          用户关注的股票价格


3.4  业务场景模拟测试

根据实际的业务情况,10万用户,3万活跃用户及用户各种业务的频率分析。

系统会在一秒内访问数据库 200 次左右(查询用户,查询关注,查询股票等等), 

业务场景组合每秒执行2次。


按照这种场景用java + jedis 编写了一个性能程序程序测试性能。 
测试结果:

耗时:100毫秒 一次组合业务

性能:142次/秒

PC性能:i5-5200 8G ,

单从数据库访问角度,用我的PC做为数据库服务器

现在的业务程度,还有 70 倍的空间。



下一篇, 我想研究一下,怎么做集群。 欢迎探讨






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值