社区
高性能WEB开发
帖子详情
redis如何实现原子性-LPOPRPUSH
学无止境-逆流而上
2016-09-20 10:02:48
有个高并发场景:2台机,在redis处共享一个list,来做先进先出队列,实现数据平均分配。但是Java redis并没有lpop+rpush结合在一起的原子操作,我如果将lpop+rpush加锁的话,又满足不了高并发;不加的话,会导致数据脏,丢失等问题。
比如redis维护队列:1,2,3,4
我希望高并发原子实现:(不加锁)
1出来的同时,排到队尾2,3,4,1
大家有啥意见?
...全文
5589
2
打赏
收藏
redis如何实现原子性-LPOPRPUSH
有个高并发场景:2台机,在redis处共享一个list,来做先进先出队列,实现数据平均分配。但是Java redis并没有lpop+rpush结合在一起的原子操作,我如果将lpop+rpush加锁的话,又满足不了高并发;不加的话,会导致数据脏,丢失等问题。 比如redis维护队列:1,2,3,4 我希望高并发原子实现:(不加锁) 1出来的同时,排到队尾2,3,4,1 大家有啥意见?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ps45221
2016-09-21
打赏
举报
回复
你既不想加锁,又想要原子操作。。。 用java代码层面的话,效率会慢点。 你可以尝试把这两个操作用Lua脚本写,redis是可以原子性执行Lua脚本的 或者,你自己在redis维护一个事务锁
学无止境-逆流而上
2016-09-20
打赏
举报
回复
目前打算扭转一下思维,用rpoplpush(redis有这个原子操作)来做逆向,然后插入元素时lpush,弹出元素时rpop。原来redis不提供 lpoprpush是OK的。
Redis
基础-集群-实战-调优
Redis
数据库因为它的高性能、可靠和高可扩展的特性,成为很多大型互联网公司的首选。 通过本门课程的学习帮你建立起系统观和全局观,从而带你彻底搞懂
Redis
的底层
实现
原理。
Redis
常用命令
前台启动命令
redis
-server 复制一份配置文件到etc 中 将daem下的no改成yes 后台启动
redis
-server /etc/
redis
.conf 使用
redis
-cli 连接
redis
输入ping 响应pong 则连接正常 使用Kill -9 进程号 关闭
redis
或
redis
-...
redis
实现
消息队列的几种方式及其优劣
本篇文章探讨了一下如何使用
redis
实现
消息队列。使用
redis
无需额外的部署,如果原先就有使用
redis
的话。此外
redis
更为轻量也更容易维护。但是
redis
实现
消息队列有多种方案,这些方案有其优点也有其缺点,适用于不同...
简单
实现
redis
实现
高并发下的抢购/秒杀功能
简述 抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢? 常规写法: ...$
redis
= new
Redis
(); $
redis
->connect('127.0.0.1', 6379); //系统库存量
getset
原子性
redis
_
Redis
原子性
事务Lua应用
Redis
平时用的挺多,大多是情况用于队列消费和缓存,很少用上事务,最近因为队列高并发消费问题,处理完成后整理出相关的信息;背景大量业务需要从
Redis
List Pop 出任务进行处理,部分任务处理可能出现因为第三方...
高性能WEB开发
25,985
社区成员
4,366
社区内容
发帖
与我相关
我的任务
高性能WEB开发
高性能WEB开发
复制链接
扫一扫
分享
社区描述
高性能WEB开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章