1
fkdog 2022-09-04 00:21:44 +08:00
现在的人都懒到官方文档都不肯去看一眼,光明正大伸手了?
https://redis.io/docs/manual/transactions/ |
2
richangfan 2022-09-04 00:22:40 +08:00
时间窗口计数器,用来限流
|
3
LeegoYih 2022-09-04 04:40:36 +08:00
用事务的目的是什么,如果只是为保证多条命令原子性,可以用 lua 脚本
|
4
LeeReamond 2022-09-04 05:12:44 +08:00 18
@fkdog 显然 OP 是看过以后认为没什么用才来发帖,你不想答可以不答,我觉得没必要踩别人一句体现自己的优越感
|
5
kindjeff 2022-09-04 07:56:23 +08:00
用 Redis 做分布式锁简直不要太常见
|
7
luin 2022-09-04 09:13:03 +08:00 3
个人感觉确实没啥用哈哈哈。之前公司的项目都是用 Redis scripts 。
另外 Redis 官方文档也提到了: > Something else to consider for transaction like operations in redis are redis scripts which are transactional. Everything you can do with a Redis Transaction, you can also do with a script, and usually the script will be both simpler and faster. |
8
xhinliang 2022-09-04 09:13:17 +08:00
没什么用。尤其是对于 proxy 实现的集群,等同于摆设。
|
9
javaisthebest 2022-09-04 10:22:18 +08:00
没啥用,Redis 事务是一个假事务,不保证原子性。
|
10
orzwalker111 2022-09-04 10:44:26 +08:00
没用
|
12
qinxi 2022-09-04 10:47:54 +08:00
@javaisthebest #9 假事务说的是不能回滚.并不是不保证原子吧
|
13
crysislinux 2022-09-04 11:04:53 +08:00 via Android
事务确实没啥用了,基本上都用 lua 替代了
|
14
MeteorCat 2022-09-04 11:35:38 +08:00 via Android
实际日常很少用,都忘记有这个特性了
|
15
securityCoding 2022-09-04 12:37:12 +08:00
基本不用,都在用 lua 了
|
16
Mitt 2022-09-04 14:08:16 +08:00 1
@LeeReamond #4 不知道你这个 “显然” 又是从何而来,毕竟楼主既没有说明自己看过也没列举自己的观点
|
17
jack778 2022-09-04 15:13:18 +08:00
被 redis 事务坑过,你插入了一个值,然后马上查询居然查不到...
|
18
roundgis 2022-09-04 16:34:06 +08:00 via Android
從來沒用過
有需要用 eval script 就好了 |
19
kkkiio 2022-09-04 18:10:39 +08:00 via iPhone
redis 持久性都很难保证,跟数据库的事务差太远了,用脚本凑合就行了
|
20
cheng6563 2022-09-04 18:35:01 +08:00
没用,被 lua 完全取代了
|
21
S2Line 2022-09-04 20:29:44 +08:00 via iPhone
没用,用 lua 脚本
|
22
thetbw 2022-09-04 21:39:56 +08:00
@jack778 multi 之后执行的查询都不会返回值,而是 exec 后批量返回。所以说 redis 的这个不像是事务,像是批处理。不过可以用 watch 来监听一个 key
自己简单写过一个笔记 https://blog.thetbw.xyz/archives/java-redis-transaction |
24
daoqiongsi1101 OP @LeeReamond 看到第一个回复感到很惊讶,觉得他就是想都没想就喜欢喷的那种人,很多人也赞同我们的感受,我也给你点个赞
@fkdog 看了文档,介绍了事务的一些用法,谢谢你,我不是伸手要这个,麻烦具体回答我的问题 |
25
daoqiongsi1101 OP @Mitt 澄清一下,redis 事务原理和用法我看过,所以才提问,谢谢!请关注问题本身。
|
26
ediron 2022-09-05 02:15:27 +08:00 1
Redis 事务并不是传统意义上的 ACID 事务,它满足不了原子性和持久性,只是保证了这批命令在这个客户端执行完之前不被别的操作打断,执行期间遇到异常(命令执行错误或服务宕机)并不会回滚,这点官方也说明了认为 Redis 没必要回滚,命令执行了就是执行了彼此之间没有什么必要联系,这样简单便捷性能也更好。我也觉得是这样,Redis 本身就是非关系型数据库,各个数据之间并不存在逻辑关系,没必要回滚。所以就像 @thetbw 说的就把 Redis 事务当作是批处理,而批处理用 Lua 脚本就可以。确实我也没用到和见到过 Redis 事务的应用,另外有看到说事务中的每条命令都会与 Redis 服务器进行网络交互,这是比较浪费资源的行为,所以 Redis 事务是不建议在日常开发中使用的。
|
27
yanqic 2022-09-05 10:54:51 +08:00
bulljs 库(消息队列),会用到事务(批量添加消息 addBulk). 但是我们用的时候在阿里云 redis 集群模式下不可用. 感觉 redis 事物还是尽量少用
|
28
tairan2006 2022-09-05 13:46:52 +08:00
基本用 lua
|
29
iseki 2022-09-05 21:43:49 +08:00 via Android
在你不想 /不便于使用 lua 时,事物还是有点用的
|
30
iseki 2022-09-05 21:44:47 +08:00 via Android
比如说我在 Redis 里存了 protobuf…lua 就不太方便了
|