zoukankan      html  css  js  c++  java
  • Redis实现分表操作id唯一

    业务场景

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

    解决方案

    • 设置数值数据增加指定范围的值
    incr key
    incrby key increment
    incrbyfloat key increment
    
    • 设置数值数据减少指定范围的值
    decr key
    decrby key increment
    

    string作为数值操作

    • string在redis内部存储默认就是一个字符串,当遇到增减类操作incr,decr时会转成数值型进行计算
    • redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响.
    • 注意: 按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis数值上限范围,将报错。9223372036854775807 (java中long型数据最大值,Long.MAX_VALUE)

  • 相关阅读:
    Thrift在微服务中的使用
    MySQL 必知必会
    IDEA 内使用 git
    分布式锁
    LeetCode 图
    LeetCode 位运算
    LeetCode 数组
    LeetCode 字符串
    LeetCode 哈希表
    LeetCode 栈和队列
  • 原文地址:https://www.cnblogs.com/ifme/p/12301172.html
Copyright © 2011-2022 走看看