Redis分布式锁如何实现?
怪我咯
怪我咯 2017-04-24 09:10:16
0
3
786

Redis 是一内存Key-Value数据库, 现在一般都用它来做缓存服务.目前在一次生产环境中使用了它做业务缓存, 主要用的使用场景是: 抽奖活动, 活动中对于不同的奖项有奖品数量限制, 这就相当于是一个抢购的功能一般, 由于后端的服务是分布式的, 这便衍生出一个问题, 这个奖品数量的控制如何实现? 参考了下一些网友的经验, 发现他们大部分都是使用 RedisSETNX命令+sleep 实现类似锁的概念. 但sleep的方法似乎会造成一些不必要的资源消耗, 官方推荐的是使用Redisson(Java语言), 它已经实现了RLock, 不过我们已经使用了Jedis实现对Redis操作. 不知道大家对此场景有更加好的建议? 如果有使用过RedissonJedis经验最好, 可以一起分析讨论下两者的差异与优缺点.谢谢.

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(3)
迷茫

Redsi yang digunakan untuk mengira haruslah satu titik dalam redis ialah operasi atom Selepas pelaksanaan, periksa sama ada ia adalah
Mengapa menggunakan kunci? keluar;

PHPzhong

Berikut ialah strategi kunci yang diedarkan Redis yang ditulis oleh netizen
Melaksanakan kunci yang diedarkan berdasarkan Redis

Jedis tidak melaksanakan kunci yang diedarkan oleh rasminya memperkenalkan Ression sebagai pelanggan Java yang disyorkan kemudian. Jika anda melaksanakannya sendiri, anda mungkin mempunyai banyak pepijat lihat Ression untuk melaksanakan kunci yang diedarkan, atau lihat jika anda boleh mengambil kod sumber dan mengubah suainya, dan sebaliknya menggunakan Jedis.

迷茫

Hanya gunakan b(r|l)pop:
1, letakkan elemen ke dalam senarai lebih awal
2, berbilang pelanggan melakukan brpop dan hanya satu pelanggan mendapat elemen (iaitu, mendapat kunci )
3. Selepas memproses, blpus elemen kembali ke senarai dan tunggu pelanggan lain untuk mendapatkannya
4 elemen terlebih dahulu
2. Dapatkannya Jika pelanggan keluar secara tidak normal selepas mengunci, akan ada masalah

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan