【地铁上的Redis与C#】数据类型--string类型数据的扩展操作

2023-01-08 09:27:37 浏览数 (1)

本篇文章我们来讲一下string类型数据的扩展操作,我们先来看一下假设场景。

场景

在大型企业级应用中,分表操作是基本操作,也是常见操作,用多张表存储同类型的数据,那么这里就存在一个问题,主键必须唯一不能重复,虽然对于Oracle这种大型/超大型数据库来说都具有相关的机制,但是MySQL却并不具备类似的机制。如果应用的数据库是MySQL的话就很棘手,这时我们就可以使用Redis来解决。

Redis如何解决

Redis解决前述问题有两种方法:使用incr指令或使用decr指令。

incr指令

incr指令的作用是数值数据增加指定范围的值,常用指令有三种,分别是incrincrby以及incrbyfloat

  1. incr 指令,语法incr key,该指令每执行一次,key对应的value就会加1,例如我们要给id加1,那么我们可以这么做,incr id
  2. incrby指令,语法incrby key addnum,该指令每执行一次,key对应的值增加addnun,例如我们要给id增加5,那么我们可以这么做incrby id 5
  3. incrbyfloat指令,语法incrbyfloat key addfloatnum,该指令每执行一次,key对应的值增加addfloatnum,其中addfloatnum是float类型,例如我们要给id增加1.5,我们可以这么做incrbyfloat id 1.5
decr指令

decr的作用是数值数据减少指定范围的值,常用指令有三种,分别是decrdecrby

  1. decr指令,语法decr key,该指令每执行一次,key对应的value就会减1,例如给num减1,指令如下decr num
  2. decrby指令,语法decrby key subnum,该指令没执行一次,key对应的value的值减去subnum,例如num需要减去12,指令如下decrby num 12
string作为数值操作

对于string类型的数据作为数值进行操作需要注意以下三点:

  1. string在Redis内部存储默类型认就是一个字符串。当遇到增减类操作时会转换成数值进行计算;
  2. Redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发对数据造成的影响;
  3. 如果按数值进行操作,那么原始数据在不能转换成数值或者超过了Redis数值的上线的话,将会报错。

Tip:

  1. Redis 用于控制数据库表主键Id,为数据库表逐渐提供生成策略,保障数据库表的主键唯一性;
  2. 此方案适用于所有数据库,且支持数据库集群。

0 人点赞