redis 学习笔记(二)

目录

 

一.Redis的数据类型

二.redis数据类型(5种常用的类型)

三.String类型

四.数值操作                                                                                                                                                                                                                                                                                          

五.String类型的扩展操作

六.String 类型数据操作的注意事项

七.redis的命名标准方式


一.Redis的数据类型

             1.redis常用的解决方案      原始业务功能设计 秒杀,或者排队购票

             2.运行平台监控到高频突发:突发时政要闻

             3.高频的统计数据:在线人数,投票排行榜

             4.附加功能:系统功能优化或升级

                               单服务器升级集群      

                               session管理

                               token管理

二.redis数据类型(5种常用的类型)

            

redis java(只是类似但底层并不一致)
String String
hash Hashmap
list LinkedList
set HashSet
sorted-set TreeSet

 

  redis 数据存储格式

        redis自身是一个map,其中所有的数据都是用key:value的形式存储

        redis存储空间 指得是value部分,key值永远是字符串

三.String类型

            1.String类型

                      存储数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型

                      存储格式:一个存储空间保存一个数据

                      存储内容:通常使用字符串,如果字符串以整数的形式展示

                      可以作为数字使用,但是仍为字符串格式

           2.String类型数据的基本操作

                   添加/修改数据

                   set  key value

redis 学习笔记(二)

                  获取数据

                  get key

redis 学习笔记(二)

                 删除数据

                 del key

redis 学习笔记(二)

                 添加修改数据

                 mset key1 value1 key2 value2

redis 学习笔记(二)

               获取多个数据

               mget key1 key2 key3.....

redis 学习笔记(二)

              获取数据字符长度(字符串长度)

              strlen key

redis 学习笔记(二)

              追加信息到原始信息后部(如果原始信息存在就追加,否则就新建)

              append key value(有就加到后面,无就新建)

redis 学习笔记(二) redis 学习笔记(二) 

 

3.操作指令的性能对比

        set key value  VS mest key1 value1 key2 value2....

一条指令的执行时间

redis 学习笔记(二)

 

单指令 3条指令的执行时间 1redis链接*6+redis插入*3
多指令 3天指令的执行时间 1redis链接*2+redis插入*3

 

 多指令与单指令进行平衡

                  1亿条 多指令不如单指令,多指令会让线程阻塞      平衡线程链接时间与指令执行时间

四.String的数值操作

         String 类型的数据的扩展操作

         业务场景:

                      大型企业级应用中,分表操作是一个基本操作,使用多表存储同类型数据,但对应的主键id必须保证统一性不能重复.oracle数据具有sequence设定,可以解决该问题,但mysql数据库并不具备类似的机制,该如何解决?

                           1.分库分表的主键重复问题

                                  oracle---sequeue

                                 mysql---redis解决问题

        redis的解决方案

                          设置数值数据增加指定范围的值

                          incr key 对所存数字加一

                          incrby key increment 指定增加多少

                          incrbyfloat  key increment 一次增加一个小数

redis 学习笔记(二)

                          设置数据数值减少指定范围的值

                          decr key

                          decrby key increment  指定减少一定的数值

redis 学习笔记(二)

                         可以为负数,这样负负得正

 

                                                                                                                                                                                                                                                                                           String 作为数值操作 

               String在redis 内部存储默认就是一个字符串,当遇到增减数字类操作incr,decr会转成数值型计算

               redis所有操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行得,因此不用考虑并发所带来的数据影响

               注意:按数值进行操作的数据,如果原始数据不能转换成数值,或者超越redis上数值的上线范围,将报错

               上限数字为:922337203685477

               java种long型数据最大值,LONG.MAX_VALUE

        tips:

        redis 用于控制数据库表主键id,为数据表主键提供生成策略保障主键唯一性

             此方案是用于所有数据库并支持数据库集群                                                                                                                                                                                                                                                                                                                                                                

五.String类型的扩展操作

        业务场景

        1."最强女生"启动投票,只能通过微信投票,每个微信号4小时只能投一票

        2.电商商家开启热门商品推荐,热门商品不能一致处于热门期,每个商品热门维持3天,3天后自动取消热门

        3.新闻网站会出现热点新闻,热点新闻最大的特征是时效性,如何自动控制热点新闻的时效性

               redis设置生存时间

         

    解决方案:

         设置数据具有指定的生命周期

         setex  key seconds value               秒

redis 学习笔记(二)

         psetex  key milliseconds value       毫秒

      redis 学习笔记(二)

 

tips2:

      redis 控制数据的生命周期,通过控制数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作

 

 

六.String 类型数据操作的注意事项

        1.运行成功 ---1

           运行失败-----0

      2.数据未获取到 nil 相等于Java的null

      3.数据的最大存储容量  512M

      4.数值计算最大范围(Java种long的最大值)

七.redis的命名标准方式

        在redis种 为大V设定用户信息,以用户主键和属性作为key,

       表名:主键名:主键值:属性值

        区分以冒号(:)区分,标准做法

       也可以以json字符串的格式存储对象,但是每一个都需要取出来修改

  tips3:

             redis应用于各种结构型和非结构型高热度数据访问加速

 

key的设置约定

               表名:主键名:主键值:属性值  一个冒号生成一个命名空间

             redis 学习笔记(二)

            redis 学习笔记(二) 这就是命名空间的效果