【地铁上的Redis与C#】数据类型--string类型数据的扩展操作
2023-06-13 09:16:33 时间
本篇文章我们来讲一下string类型数据的扩展操作,我们先来看一下假设场景。
场景
在大型企业级应用中,分表操作是基本操作,也是常见操作,用多张表存储同类型的数据,那么这里就存在一个问题,主键必须唯一不能重复,虽然对于Oracle这种大型/超大型数据库来说都具有相关的机制,但是MySQL却并不具备类似的机制。如果应用的数据库是MySQL的话就很棘手,这时我们就可以使用Redis来解决。
Redis如何解决
Redis解决前述问题有两种方法:使用incr指令或使用decr指令。
incr指令
incr指令的作用是数值数据增加指定范围的值,常用指令有三种,分别是incr、incrby以及incrbyfloat
- incr 指令,语法incr key,该指令每执行一次,key对应的value就会加1,例如我们要给id加1,那么我们可以这么做,
incr id
。 - incrby指令,语法incrby key addnum,该指令每执行一次,key对应的值增加addnun,例如我们要给id增加5,那么我们可以这么做
incrby id 5
。 - incrbyfloat指令,语法incrbyfloat key addfloatnum,该指令每执行一次,key对应的值增加addfloatnum,其中addfloatnum是float类型,例如我们要给id增加1.5,我们可以这么做
incrbyfloat id 1.5
。
decr指令
decr的作用是数值数据减少指定范围的值,常用指令有三种,分别是decr、decrby。
- decr指令,语法decr key,该指令每执行一次,key对应的value就会减1,例如给num减1,指令如下
decr num
。 - decrby指令,语法decrby key subnum,该指令没执行一次,key对应的value的值减去subnum,例如num需要减去12,指令如下
decrby num 12
。
string作为数值操作
对于string类型的数据作为数值进行操作需要注意以下三点:
- string在Redis内部存储默类型认就是一个字符串。当遇到增减类操作时会转换成数值进行计算;
- Redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发对数据造成的影响;
- 如果按数值进行操作,那么原始数据在不能转换成数值或者超过了Redis数值的上线的话,将会报错。
Tip:
- Redis 用于控制数据库表主键Id,为数据库表逐渐提供生成策略,保障数据库表的主键唯一性;
- 此方案适用于所有数据库,且支持数据库集群。
相关文章
- PHP扩展开发:实现Redis读写数据(php扩展redis)
- 实现高可用Redis双主实现高可用度——一种新的技术方案(redis双主)
- Redis:高性能、可扩展的缓存与数据库方案(redis数据库)
- Redis扩展:提升性能和效率的新选择(redis扩展)
- Redis实现高效扩展优势与挑战(扩展redis)
- 深入探索Redis连接实例(查看redis连接实例)
- 查看Redis扩展版本提升数据存储能力(查看 redis扩展版本)
- 籍深入Redis构建高可用可扩展的数据库系统(深入redis 书)
- 使用Vue从Redis获取数据(vue去redis取数据)
- TP5扩展Redis并创建更灵活的结构(tp5拓展redis类)
- 构建TP5项目基于Redis扩展的优化(tp5 redis 扩展)
- 安装PHP扩展程序让网站支持Redis(安装php-redis)
- 深入了解Redis负载如何查看实时数据(如何查看redis负载)
- Redis突破极限,实现高度扩展(redis高扩展)
- 可扩展火力全开Redis实现高度可扩展性(redis高度)
- Redis队列数据复制实现更高效稳定(redis队列复制)
- 利用Redis配置构建更大的内存空间(redis配置扩展内存)
- 红色信号运维工程师的Redis学习之路(redis运维学习)
- 从Redis缓存实现过期时间计算(redis 过期时间计算)
- 使用Redis设置锁守护应用安全(redis设置锁命令)