redis
扬名流云
江湖一小生。
展开
-
基于redis、quartz的可重试的异步通知实现
1、数据库表设计CREATE TABLE `crl_notify_record` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `notice_owner` varchar(30) NOT NULL COMMENT '通知发起方的简称', `notice_owner_serial` varchar(80) ...原创 2018-08-06 17:04:56 · 1354 阅读 · 0 评论 -
基于redis的规则流水号生成(一)
设计方案一:使用redis的incr自增,由于redis是单线程的,每次按同一key自增可保证快速生成流水号,且唯一。比如最基础的生成不重复序号:long serilno=cacheClient.incr("CST");incr操作在key为空时初始化为0在实际意义中,客户号没有这种全0的。大部分可以是有部分含义的规则流水号。比如:CST2018080200000可考虑...原创 2018-08-02 10:36:50 · 7148 阅读 · 0 评论 -
基于redis的规则流水号生成(二)
上文主要包含的最基础的redis自增生成规则流水号。但仔细分析会发现有几个问题:1、流水号规则调整了怎么办?只能去改代码?2、redis切换了怎么办?数据不迁移或者redis挂了从头生成流水号会导致重复怎么办?3、redis异常怎么办?设计方案:1、建立流水号规则配置表:CREATE TABLE `crl_serial_number_rule` ( `id`...原创 2018-08-03 10:15:43 · 2615 阅读 · 0 评论 -
基于redis的规则流水号生成(三)
针对上次的流水号生成有几处细节优化的地方1、高并发的时候,在哪个位置加锁?2、加锁的重试机制如何设置?3、加锁的重试次数与间隔时间范围应该如何?4、入队列的优化1、首先获取一次缓存中的序列号,不要直接加分布式锁,毕竟遇到查不到的情况约1000分之一2、流水号大约1秒多生成,建议超时时长设置为2-3秒,重试次数可以多次,每次间隔500ms即可。间隔过大,会导致撞锁。间隔...原创 2019-01-21 10:50:36 · 1887 阅读 · 0 评论