![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 1377 阅读 · 0 评论 -
基于redis的规则流水号生成(一)
设计方案一: 使用redis的incr自增,由于redis是单线程的,每次按同一key自增可保证快速生成流水号,且唯一。 比如最基础的生成不重复序号: long serilno=cacheClient.incr("CST"); incr操作在key为空时初始化为0 在实际意义中,客户号没有这种全0的。大部分可以是有部分含义的规则流水号。 比如:CST2018080200000 可考虑...原创 2018-08-02 10:36:50 · 7178 阅读 · 0 评论 -
基于redis的规则流水号生成(二)
上文主要包含的最基础的redis自增生成规则流水号。 但仔细分析会发现有几个问题: 1、流水号规则调整了怎么办?只能去改代码? 2、redis切换了怎么办?数据不迁移或者redis挂了从头生成流水号会导致重复怎么办? 3、redis异常怎么办? 设计方案: 1、建立流水号规则配置表: CREATE TABLE `crl_serial_number_rule` ( `id`...原创 2018-08-03 10:15:43 · 2638 阅读 · 0 评论 -
基于redis的规则流水号生成(三)
针对上次的流水号生成有几处细节优化的地方 1、高并发的时候,在哪个位置加锁? 2、加锁的重试机制如何设置? 3、加锁的重试次数与间隔时间范围应该如何? 4、入队列的优化 1、首先获取一次缓存中的序列号,不要直接加分布式锁,毕竟遇到查不到的情况约1000分之一 2、流水号大约1秒多生成,建议超时时长设置为2-3秒,重试次数可以多次,每次间隔500ms即可。间隔过大,会导致撞锁。间隔...原创 2019-01-21 10:50:36 · 1909 阅读 · 0 评论