网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月02日
漏签
0
天
java吧
关注:
1,293,276
贴子:
12,824,937
看贴
图片
吧主推荐
视频
游戏
17
回复贴,共
1
页
<返回java吧
>0< 加载中...
关于id生成
只看楼主
收藏
回复
看见请叫我去刷力扣
淼淼水
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
现在要生成一个12位id由注册天数和次序组成,例如今天第一个个注册就是 20221027-0001 第二个就是20221027-0002 第二天第一个注册就是20221028-0001 这样改怎么实现,要用redis吗
送TA礼物
IP属地:海南
来自
Android客户端
1楼
2022-10-27 12:25
回复
lights
淼淼沝
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
不需要什么其他信息,用redis。如果需要保存一些其他信息,就用数据库,可以多保存点东西,例如用户的注册时间(这个可以追溯到几点几分几秒),IP(这个可以知道软件使用者地区分布,哪里人多,,方便以后可以针对性的做营销)。最简单就是redis,取出来用完加一放回,记得给注册加锁,避免多线程问题。
IP属地:广东
来自
Android客户端
3楼
2022-10-27 12:51
回复(1)
收起回复
2026-01-02 05:17:29
广告
不感兴趣
开通SVIP免广告
微信吧哈哈
水
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
没啥别的要求也可以用触发器
IP属地:辽宁
4楼
2022-10-27 15:26
回复
收起回复
倾心倾城醉人心
淼淼淼沝
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
用redis最简单
IP属地:浙江
5楼
2022-10-27 15:56
回复
收起回复
倾心倾城醉人心
淼淼淼沝
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
直接以日期为key,进行递增,设置1天的过期时间
IP属地:浙江
6楼
2022-10-27 15:57
回复
收起回复
一天天武
淼淼淼淼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
直接写一个static 的lock返回的方法不就行了
。
只要你保证调用这个方法返回当前值,并将值+1不就行了
IP属地:湖南
来自
Android客户端
7楼
2022-10-27 15:57
回复(5)
收起回复
倾心倾城醉人心
淼淼淼沝
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
用数据库还要考虑并发,更麻烦,用原子类递增的那个还要考虑怎么归零,也麻烦
IP属地:浙江
8楼
2022-10-27 15:59
回复
收起回复
2711352
淼淼水
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
服务器是单体服务还是集群服务对计数影响不大, 主要是实现思路.
就比方说: 如果你在内存中做计数器, 程序重启后计数不会持久保存, 就没有意义, 所以你需要有存储媒介.
存储媒介可选择, 数据库或redis. 都可以, 它只为帮助你计数并持久存储一段时间数据. 所以选择哪种都无所谓, 相对而言 redis 会简单点.
线程安全和数据安全的问题无论是单服务还是多服务都会有这类问题所以一次性解决即可.
redis实现 命令可以使用:
比如 incrkey:20221027 是key, 在这个key上面做自增.
incrby "incrkey:20221027" 1
java 中使用 Jedis客户端(示范)
Jedis jedis = new Jedis("localhost", 6379);
// 每次会在这个KEY上自增1. 可以用这个数, 原子操作所以不用考虑数据安全.
long count = jedis.incrBy("incrkey:20221027", 1);
数据库就用sql可以解决, 你需要建立一张表.
比如只有两个词段, day_key varchar(30) 主键, count_value BIGINT(20)
数据库的key最开始是不存在的所以需要先insert初始化一个0数据. 然后下面的操作即可.
下面语句请在一个事务中去执行操作, 因为会有key的行锁存在所以也是安全的.
-- update 会在 day_key = ? 上面增加行锁, 查询的时候会是新的.
update table_name set count_value = count_value + 1 where day_key = 'incrkey:20221027';
-- 直接查询即可. 因为上面update已经在day_key=?加锁了
select count_value from table_name where day_key = 'incrkey:20221027';
-- 最后在提交, 结束这个事务, 释放锁.
commit;
用count_value返回的值计数即可.
IP属地:河北
11楼
2022-10-27 16:45
回复(2)
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
吸烟≠做贡献,千亿损失太打脸
2453250
2
日本重金投高铁,遭越南变卦坑惨
1781818
3
内部有鬼?牢真连夜改名删素材
1540168
4
轻松碾压!IG零封LNG挺进决赛
1314495
5
拒交工资遭诬告,婚姻工作全泡汤
1112306
6
IG法务出击,炫神败诉赔到破产
990200
7
好人难当!男子捡钱归还反被讹5w
856896
8
首战斯奎奇失败,UP主删稿道歉
726225
9
牢A曝猛料:凝胶假人用真人骨
619190
10
身败名裂!子阳被KSG光速解约
576681
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示