redis实现发号器

通过mysql的auto increment自增id值可能会泄漏一些敏感的数据。

例如用户表的user_id是自增的,在url中显示的id值可能就泄露了网站真实的用户数。

下面代码通过php及redis的incrby实现简单的发号器,代码如下:

function get_id($type, $server_ip, $server_port, $key) {
    $init_num = 0;
    $redis= new Redis();
    $redis->connect($server_ip, $server_port);
    $var = $redis->exists($key);
    if($var == 0) {
        $redis->set($key,$init_num);
    }
    $incr_num = rand(1,50); //增量为随机数
    $var = $redis->incrby($key, $incr_num);
    $redis->close();
    return $var;
}
时间: 2024-08-08 20:32:39

redis实现发号器的相关文章

野谈系列之高性能可定制化分布式发号器

刘兵,花名玄靖,开源技术爱好者,高性能Redis中间件NRedis-Proxy作者,目前研究方向为java中间件,微服务等技术. 一.什么是分布式发号器 说起分布式发号器的前生今世,咱们应该感恩这个时代:随着互联网在中国越来越普及化,单机系统或者一个小系统已经无法满足需要,随着用户逐渐增多,数据量越来越大,单个应用或者单个数据库已经无法满足需求,在应用以至于微服务来临,在数据库存储方面分库分表来临,可以解决问题:但是新的问题产生,怎么样做到多个应用可以有唯一主键或者序号,防止数据重复呢?分布式发

FAQ系列 | 用MySQL实现发号器

问题:用MySQL实现发号器功能,确保每次取到的ID号都是唯一的实现:下面是一个大致的思路,抛个砖,欢迎回帖.根据号段大小,决定是否分成多个表,每个表事先填充各个不同的号段.每个应用端取号时,设置事务隔离级别为:REPEATABLE READ,并且采用下面的方式读取数据 SELECT `ID` FROM `ID_RANGE_XX` ORDER BY ID LIMIT 1 FOR UPDATE 在上述情境中,只要选择某个ID号,那么其他终端也在读取该号时,会产生锁等待,而不会发生ID号被重用的情况

关于snowflake发号器算法简单学习

概述 在分布式系统中,有一些需要使用全局唯一的ID编号,最常使用的方法是在每个系统间传递和保存一个统一唯一流水号,通过系统间两辆核对或者第三方核对唯一流水号来保证各个系统之间步伐一致,没有掉队的行为,也就是系统间状态一致,在互联网的世界里,产生唯一流水号的服务系统俗称发号器. 当前业务系统的ID使用数据库的自增字段,自增字段完全依赖于数据库,这在数据库移植,扩容,洗数据,分库分表等操作时带来了很多麻烦. 在数据库分库分表时,有一种办法是通过调整自增字段或者数据库sequence的步长来达到跨数据

发号器的设计

数据库中的每条记录都需要一个ID,即使在分库分表后这个ID需要全局唯一性.因此,分库分表后不能使用Mysql自带的自增ID了.因为不通的库之间的ID可能是一样的. 我们以记录海量的用户信息为例,可能会想到身份证号.电话号码或者email.但是这些信息是会变的.如果用户要修改这些信息,那么ID就失效了.无异于新增一条记录,删掉原来的记录. 基于 Snowflake 算法搭建发号器 雪花算法可以提供全局唯一的ID.雪花算法生成的ID一般是分几段的,下图就是典型的ID组成:41位时间戳(一般是毫秒级?

分布式——分布式发号器

今天停电,所以springboot源码看不了,手头刚好有本书,学习了下分布式发号器 一.方案 1.UUID 2.数据库自增序列 3.Snowflake——雪花算法 二.自定义设计需求与实现 原文地址:https://www.cnblogs.com/wqff-biubiu/p/12578508.html

lua学习笔记之-----5行代码完成ID发号器

版权归作者所有,任何形式转载请联系作者. --生成ID的位数比较合理长度为52个bit,然后可以时间上有序的,包含项目和实例信息 -- 在redis客户端执行: redis-cli -h 127.0.0.1 -p 6379 EVAL "$(cat ticketID.lua)" 2 01 02-- EVAL 后面的参数解释 "$(cat ticketID.lua)"是我们执行的lua脚本文件,-- "2"是代表传入lua脚本的参数有两个KEY,--

最新dedecms网页游戏开服表发号网站源码模板

模板介绍 最新dedecms网页游戏开服表发号网站源码模板,让你更精确的把握游戏开服时间和战略技巧. 这套网页游戏模板是织梦二次开发后的一套网页源码,后台也是经过二次开发后,适合游戏网站的一些参数说明及添加信息. 模板文件: 404.htm            大气的404页面 article_fahao.htm  发号模板详细页 article_time.htm   发号时间详细页 footer_time.htm    发号时间底部模板 head_time.htm      发号时间头部模板

第二篇T语言实例开发,福彩3D摇号器

---恢复内容开始--- 福彩3D摇号器 先验知识功能的含义与使用 功能是TC源程序的基本模块,通过对功能模块的调用实现特定的功能,TC语言中的功能相当于其他高级语言的子程序. 在TC里面,功能分为三大部分: TC库功能:这类功能是TC内置的,可以任意调用 TC的事件功能: 这类功能是界面控件的事件. TC自定义功能: 这类值根据代码功能自定义的,:灵活性和使用性更大. 自定义功能的使用 格式:功能+空格-功能名+() 功能结束 功能的参数说明 在TC里功能也分为两类:无参功能,有参功能. 1.

[转]Wing IDE 6.0 安装及算号器注册机代码

下载安装wing 选择第三个,运行算号器,输入license id 输入request id. Python 2 算号器注册机代码 import string import random import sha BASE16 = '0123456789ABCDEF' BASE30 = '123456789ABCDEFGHJKLMNPQRTVWXY' def randomstring(size=20, chars=string.ascii_uppercase + string.digits): re