目录

 

​一.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 学习笔记(二)_redis

                  获取数据

                  get key

redis 学习笔记(二)_redis_02

                 删除数据

                 del key

redis 学习笔记(二)_redis_03

                 添加修改数据

                 mset key1 value1 key2 value2

redis 学习笔记(二)_数据_04

               获取多个数据

               mget key1 key2 key3.....

redis 学习笔记(二)_主键_05

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

              strlen key

redis 学习笔记(二)_主键_06

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

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

redis 学习笔记(二)_数据_07

 

redis 学习笔记(二)_redis_08

 

 

3.操作指令的性能对比

VS

一条指令的执行时间

redis 学习笔记(二)_数据_09

 

单指令

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 学习笔记(二)_主键_10

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

                          decr key

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

redis 学习笔记(二)_redis_11

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

 

                                                                                                                                                                                                                                                                                           String 作为数值操作 

ncr,decr会转成数值型计算

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

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

922337203685477

LONG.MAX_VALUE

        tips:

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

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

五.String类型的扩展操作

        业务场景

4小时只能投一票

3天,3天后自动取消热门

时效性

   redis设置生存时间

         

    解决方案:

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

         setex  key seconds value               秒

redis 学习笔记(二)_数据_12

         psetex  key milliseconds value       毫秒

      

redis 学习笔记(二)_数据_13

 

tips2:

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

 

 

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

        1.运行成功 ---1

           运行失败-----0

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

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

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

七.redis的命名标准方式

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

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

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

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

  tips3:

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

 

key的设置约定

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

             

redis 学习笔记(二)_主键_14

            

redis 学习笔记(二)_数据_15

 这就是命名空间的效果