浅谈Redis事务机制

来源:互联网 发布:sleep water 知乎 编辑:程序博客网 时间:2024/05/15 12:15

浅谈Redis事务机制,后续会进行补充,希望有人指教


https://www.zhihu.com/question/35949129 


redis 实现事务有两种方式

一是使用 MULTI   EXEC   DISCARD  WATCH

二是使用lua脚本事务

具体可以看官方文档:Transactions


当多个客户端同时对同一个键 进行专业昂的操作时 Redis的事务还是有意义的,设想这样一个场景:

我们需要原子性的为某个值进行增1的操作,如果客户端A和B都读取了键原来的值,比如10,那么两个客户端都会将键的值设为11,但正确得结果应该是12才对

有了WATCH,我们就可以轻松地解决这类问题了:

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define P system("pause")#define inf 0x3f3f3f3ftypedef long long LL;#define M 10005#define MAXN 205#define _clr(x) memset(x,-1,sizeof(x))int KM(int m,int n,int mat[][MAXN]){    int s[MAXN],t[MAXN],l1[MAXN],l2[MAXN];    int match1[MAXN],match2[MAXN];    int p,q,i,j,k,ret=0;    for(i=0;il1[i]?mat[i][j]:l1[i];        if(l1[i]==inf)  return -1;    }    for(i=0;i=0;j=p)                        {                            match2[j]=k=t[j];                            p=match1[k];                            match1[k]=j;                        }                    }                }            }        }        if(match1[i]<0)        {            i--;            p=inf;            for(k=0;k<=q;k++)            {                for(j=0;jm) puts("L will die!");        else printf("%d\n",ans);    }    return 0;}

原创粉丝点击