一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于redis的分配递增整型数据的方法与流程

2021-12-17 19:22:00 来源:中国专利 TAG:


1.本发明涉及数据处理领域,尤其涉及一种基于redis的分配递增整型数据的方法。


背景技术:

2.在分布式应用时代,多用户并发场景下,需要为用户分配某项资源的标识,可以为其分配一个递增的整型资源,但是不同于单体应用,是存在着重复分配的风险。


技术实现要素:

3.本发明的目的在于提供一种基于redis的分配递增整型数据的方法,旨在防止资源的重复分配。
4.为实现上述目的,本发明提供了一种基于redis的分配递增整型数据的方法,包括:redis分布式锁锁住用户id;
5.在redis系统中存入key和value对应的值;
6.基于key值对redis中的整形数组进行数据分配;
7.redis分布式锁解锁。
8.其中,所述在redis系统中存入key和value对应的值的具体步骤是:
9.将设定的key和value存入redis系统;
10.根据key值查询redis存储的整型数组,如果没有值,就从数据库查询出来存入redis的key对应的整型数组中。
11.其中,所述基于key值对redis中的整形数组进行数据分配的具体步骤是:
12.整形数组进行升序排序;
13.遍历该数组,按顺序两两比较相邻的数值,若差值大于一,则分配其中小值加1,存入redis中key对应的数组和数据库中,若差值小于1继续遍历该数组,直至数组的最后一个值;
14.到数组最后一个值时则将较大值加1,获取该数值并存入redis中key对应的数组中和数据库中。
15.其中,所述整形数组进行升序排序之前,所述步骤还包括:如果不存在数据,则将初始化数据整型数字1存入redis的key对应的数组中和数据库中。
16.其中,所述到数组最后一个值时则将较大值加1,获取该数值并存入redis中key对应的数组中和数据库中之后,所述步骤还包括:
17.若需释放整型数字资源,则删除数据库中的资源,并且从redis的key对应的数组中移除。
18.本发明的一种基于redis的分配递增整型数据的方法,包括:redis分布式锁锁住用户id;在redis系统中存入key和value对应的值;基于key值对redis中的整形数组进行数据分配;redis分布式锁解锁。从而可利用redis作为第三方工具,利用本专利提出的分配算法,分配出递增的整型数据,或者是获取其中被释放的整型数据,目的是防止资源的重复分
配;保证数据库的数据资源与redis的数据一致性;使用redis分布式锁锁住用户,防止多个用户抢夺整型资源分配过程。
附图说明
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1是本发明的一种基于redis的分配递增整型数据的方法的分配逻辑图;
21.图2是本发明的一种基于redis的分配递增整型数据的方法的流程图;
22.图3是本发明的在redis系统中存入key和value对应的值的流程图;
23.图4是本发明的基于key值对redis中的整形数组进行数据分配的流程图。
具体实施方式
24.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
25.请参阅图1~图4,本发明提供一种基于redis的分配递增整型数据的方法,包括:
26.s101redis分布式锁锁住用户id;
27.redis是一个key

value存储系统。和memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set
‑‑
有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master

slave(主从)同步。
28.redis是一个高性能的key

value数据库。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了java,c/c ,c#,php,javascript,perl,object

c,python,ruby,erlang等客户端,使用很方便。1.29.redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
30.通过分布式锁锁住用户id,防止该用户在分配的过程中,再次执行分配,解决重复分配的问题。
31.s102在redis系统中存入key和value对应的值;
32.具体步骤是:
33.s201将设定的key和value存入redis系统;
34.redis作为第三方中间件,是一种高性能的key

value数据库,使用redistemplate组件实现key,value值的存入。
35.s202根据key值查询redis存储的整型数组,如果没有值,就从数据库查询出来存入redis的key对应的整型数组中。
36.s103基于key值对redis中的整形数组进行数据分配;
37.具体步骤是:
38.s301如果不存在数据,则将初始化数据整型数字1存入redis的key对应的数组中和数据库中;
39.进行升序排序,便于按顺序分配数据和补充数据。
40.s302整形数组进行升序排序;
41.按照数据的大小进行排序,从小到大进行排序。
42.s303遍历该数组,按顺序两两比较相邻的数值,若差值大于一,则分配其中小值加1,存入redis中key对应的数组和数据库中,若差值小于1继续遍历该数组,直至数组的最后一个值;
43.s304到数组最后一个值时则将较大值加1,获取该数值并存入redis中key对应的数组中和数据库中;
44.s305若需释放整型数字资源,则删除数据库中的资源,并且从redis的key对应的数组中移除。
45.s104redis分布式锁解锁。
46.redis分布式锁,上面提到的锁住用户id就是将用户id作为key存入redis,如果是同用户操作,查询该id存在,则阻塞其操作;解锁,就是删除该用户id,新的请求来到,同用户的操作不会被阻塞
47.本发明可利用redis作为第三方工具,利用本专利提出的分配算法,分配出递增的整型数据,或者是获取其中被释放的整型数据,对数据进行升序排序,依次分配,并非随机,因此不会分配到重复的数据;对用户加锁,防止用户的重复操作,分配到重复的数据目的是防止资源的重复分配;保证数据库的数据资源与redis的数据一致性;使用redis分布式锁锁住用户,防止多个用户抢夺整型资源分配过程。从而可以在分布式系统中,分配整型资源,不受多用户并发场景的影响;分配递增的整型资源,引入redis分布式锁以及redis作为第三方存储工具,使整型资源不重复。
48.以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献