redis 学习笔记(七) 业务场景分析与相关案例

redis 学习笔记(七) 业务场景分析与相关案例一.案例一1.百度自研语音识别服务,免费给企业开放使用,现对用户进行限速,限制每个用户每分钟最多发起10次调用解决方案:1.设计计数器,调用次数用于控制业务执行次数,以及用户id为key,使用次数为value2.调用前

目录

一.案例一

二.微信接受消息顺序       

三.通用指令—key基本操作         

四.数据库通用操作

 


 

 

一.案例一

          1.百度自研语音识别服务,免费给企业开放使用,现对用户进行限速,限制每个用户每分钟最多发起10次调用

         解决方案:

                   1.设计计数器,调用次数用于控制业务执行次数,以及用户id为key,使用次数为value

                   2.调用前获取次数,判断是否超过限定次数

                            不超过次数的情况下,每次调用计数+1

                            业务调用失败,计数-1

                      为计数器设置生命周期为指定周期,例如:1秒, 1分钟

            如图所示:

                   redis 学习笔记(七) 业务场景分析与相关案例

           案例如下:

                   redis 学习笔记(七) 业务场景分析与相关案例

                    实现1分钟之内的增长

             解决方案改良:

                       取消最大值的判定,利用incr超过最大值抛出异常的方式替代每次都要判断是不是超过10

                       判断是否为nil

                                  如果是,设置为MAX-预定次数

                                  如果不是,计数+1

                                  业务调用失败,计数-1

                      遇到异常即+操作超过上限,视为使用达到上限

                     redis 学习笔记(七) 业务场景分析与相关案例

                    redis 学习笔记(七) 业务场景分析与相关案例

                     超过ERR increment or decrement wouid overflow 捕获异常即可

                     利用最大值,做触发判断

                     tips16:redis应用于限时按次的服务结算控制

 

 

二.微信接受消息顺序

        业务场景:

                     微信接收消息后,会默认将最近接收的消息置顶,当多个好友及关注的订阅号同时发送消息,该排序会不停的进行交替

             ,将重复会话设置置顶.一旦用户离线后,再次打开微信时,消息该按什么的顺序显示

             

        解决方案:

                 1.依赖list的数据具有顺序的特征对消息进行管理,将list结构作为栈使用

                 2.对置顶与普通会话分别创建独立的list分别管理

                 3.当某个list中接收到用户消息后,将消息发送方的id从list一端加入list(此处设为左侧)         

                 4.多个相同id发出的消息反复入栈会出现问题,在入栈之前无论是否具有当前id对应的消息,先删除该id

                 5.推送消息时先推送置顶会话list,   再推送普通会话list,推送完成的list清楚所有数据

                 6.消息的数量,也就是微信用户对话数量采用计数器的思想另行记录,伴随list操作同步更新

          tips17:

                  redis应用于基于时间顺序的数据操作而不是关注具体时间

 

三.通用指令—key基本操作

          1.key通用指令和数据库通用指令

              key特征:

                      key是一个字符串,通过key获取redis中保存的数据

                      key应该设计哪些操作

                            1.对于key自身有效性的相关操作:例如删除,判定存在,获取类型等

                            2.对有效性控制相关操作:例如有效期设定,判定是否有效,有效状态的切换等

                            3.对于key快速查询操作,例如按指定策略查询key等

                            4.删除指定key  del key

                                     redis 学习笔记(七) 业务场景分析与相关案例

                            5.获取key是否存在  exists key

                                    redis 学习笔记(七) 业务场景分析与相关案例

                            6.获取key的类型   type key

                                   redis 学习笔记(七) 业务场景分析与相关案例

 

                       

                                 

            key扩展操作(时效性)

                       1.为key设置有效期

                                expire key seconds

                                 redis 学习笔记(七) 业务场景分析与相关案例

                                pexpire key milliseconds 毫秒

                                 redis 学习笔记(七) 业务场景分析与相关案例

                                expireat key seconds  时间戳

                              pexpireat key milliseconds   timestamp 时间戳

 

                            获取key的有效时间

                                    ttl  key (time to live )   

                                   redis 学习笔记(七) 业务场景分析与相关案例

                                    pttl  key 

                                    redis 学习笔记(七) 业务场景分析与相关案例

                                 redis 学习笔记(七) 业务场景分析与相关案例

                                            切换key从时效性转换为永久性  persist key

                                            redis 学习笔记(七) 业务场景分析与相关案例

                                               

                        2.key查询操作

                                  key扩展操作(查询模式)

                                  查询key  keys pattern

                                  查询模式的规则

                                            1.* 匹配任意数量的任意符号

                                               ?配合一个任意符号

                                               [] 匹配一个指定符号

                                         例子:

                                               keys * 查询所有

                                               keys it* 查询所有以it开头

                                               keys *heima 查询所有以heima结尾

                                               keys  ??kong  查询所有前面两个字符任意,后面以heima结尾

                                               keys  user?  查询所有以user开头最后一个字符任意

                                               keys  u[st]1  查询所有以u开头,以1结尾,中间包含一个字母,s或者t

                       3.key的其他操作

                                         为key改名

                                           rename key  newkey 如果存在重复结果仍然改掉

                                          redis 学习笔记(七) 业务场景分析与相关案例

                                           renamenx  key newkey  存在重复结果,不覆盖改名失败

                                          redis 学习笔记(七) 业务场景分析与相关案例

                                           sort为所有key排序

                                           redis 学习笔记(七) 业务场景分析与相关案例

 

                                                  redis 学习笔记(七) 业务场景分析与相关案例 

                                           help@ generic查询相关命令的用法

                                            查看通用组的命令包括del,dump…等等通用命令

                                           redis 学习笔记(七) 业务场景分析与相关案例

 

四.数据库通用操作

     1.  数据库

                    key值的重复问题

                   1.key是由程序员定义的

                   2.redis在使用过程中,伴随着操作数据量的增加会出现大量的数据以及对应的bug

                   3.数据不区分种类,类别混杂在一起,极易出现重复或者冲突

                 解决方案:

                    1.根据业务规范命名空间

                     2.redis为每个服务提供16个数据库,编号从0到15

                    3.每个数据库之间的数据相互独立

        2.db基本操作

               切换数据库

                             select index

                             输入密码即可

                redis 学习笔记(七) 业务场景分析与相关案例

                数据操作

                            move key db 移动数据到目标仓库

                            redis 学习笔记(七) 业务场景分析与相关案例

                数据清除

                           dbsize 库中数据总量

                            redis 学习笔记(七) 业务场景分析与相关案例  

                           flushdb 清除db库中数据,默认0号仓库

                           redis 学习笔记(七) 业务场景分析与相关案例

                           flushall  清空redis数据库

                           redis 学习笔记(七) 业务场景分析与相关案例

              

            

 

 

   

                        

                                  

 

 

                                  

 

 

 

                             

                     

 

 

               

            

 

 

 

 

 

                       

                 

今天的文章redis 学习笔记(七) 业务场景分析与相关案例分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/61308.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注